【链接】:CF982C

【题意】:有一颗树,你需要切掉一些边,使这颗树分拆成若干个节点为偶数的联通分量,最多能切掉几条边。若不能切,输出-1。

【分析】:

1.若点数n为奇数,因为奇数不可能分为偶数,那么一定输出-1

2.若点数n为偶数,偶数=偶数+偶数。就从顶点1开始,当作父顶点开始dfs。dfs用于计算子树的顶点数,如果子树是偶数个顶点,那么ans就可以++,然后把该子树标记成搜索过的,最后的答案要-1;因为整棵树肯定是偶数顶点,ans也会+1;

【代码】:

[不用vis数组]

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 2*1e5+5;
const ll INF = 2147483647;
typedef pair<ll ,int> pli;
vector<int> G[maxn];
int ans;
int vis[maxn];
int dfs(int x,int fa)
{
int sum=1; //我们在讨论子数结点数一般是包括根结点自身的
for(int i=0; i<G[x].size(); i++)
{
int u = G[x][i];
if(u!=fa)
{
sum+=dfs(u,x);
}
}
if(sum%2==0) ans++;
return sum;
}
int main()
{
int n;
cin>>n;
for(int i=0;i<n-1;i++)
{
int u,v;
scanf("%d%d",&u,&v);
G[u].push_back(v);
G[v].push_back(u);
}
if(n&1)
{
puts("-1");
return 0;
}
dfs(1,0);
cout<<ans-1<<endl;//原本自己就是偶数,所以要减1
}

[用vis数组]

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 2*1e5+5;
const ll INF = 2147483647;
typedef pair<ll ,int> pli;
vector<int> G[maxn];
int ans;
int vis[maxn];
int dfs(int x)
{
int sum=1;
vis[x]=1;
for(int i=0; i<G[x].size(); i++)
{
int u = G[x][i];
if(!vis[u])
{
sum+=dfs(u);
}
}
if(sum%2==0) ans++;
return sum;
}
int main()
{
int n;
cin>>n;
for(int i=0;i<n-1;i++)
{
int u,v;
scanf("%d%d",&u,&v);
G[u].push_back(v);
G[v].push_back(u);
}
if(n&1)
{
puts("-1");
return 0;
}
dfs(1);
cout<<ans-1<<endl;
}

最新文章

  1. [LeetCode] Queue Reconstruction by Height 根据高度重建队列
  2. [BI项目记]-对项目文件进行规划
  3. .NET NLog 详解(二)
  4. MyBatis/Ibatis中#和$的区别
  5. C# HttpWebRequest提交数据方式浅析
  6. php根据IP地址跳转对应的城市,淘宝REST api调用地址直接使用
  7. jQuery获取同级元素
  8. poj 1269 水题
  9. 【转】教你爱上Blocks(闭包)
  10. Mac 下纯lua(二)
  11. Web前端性能优化的14条规则
  12. like-minded 都有什么意思_百度知道
  13. 玩转web之json(五)---将表单通过serialize()方法获取的值转成json
  14. MEF高级进阶
  15. Comparators.sort (转载)
  16. Lucene 学习资料
  17. web开发中各种宽高
  18. Django基础回顾与补充(79-80)
  19. IDEA插件(Android Studio插件)开发示例代码及bug解决
  20. Navicat For MySQL--外键建立与cannot add foreign key constraint分析

热门文章

  1. ZJOI2018 Day2 滚粗记 + 流水账
  2. oracle大数据匹配处理C#
  3. webstorm vue cli 热更新不起作用解决办法
  4. 深入理解Java虚拟机—内存管理机制
  5. NOIP2016愤怒的小鸟 [状压dp]
  6. hbase vs mongodb
  7. linux crontab执行shell脚本中包含相对路径的问题
  8. Spring - IoC(1): Spring 容器
  9. mysql5.7.11安装遇到的问题
  10. 【BZOJ2440】完全平方数 [莫比乌斯函数]