Description
一棵树N个点,最开始时边权均为0
现在你可以进行M次操作,每次将一条树上路径的所有边的边权加1
现在给你操作序列,问是否存在一棵树,使得执行完这些操作后
所有边权都为偶数
Format
Input
第一行N,M
接下来M行,描述操作
N,M<=1e5
Output
如果能找出满足条件的树,输出YES,否则为NO
Samples
输入数据 1
4 4
1 2
2 4
1 3
3 4
输出数据 1
YES
输入数据 2
5 5
1 2
3 5
5 1
3 4
2 3
输出数据 2
NO
输入数据 3
5 7
1 2
2 3
3 4
4 5
1 2
3 5
2 3
输出数据 3
YES
Hint
对于样例1
当树长成这样,可满足条件
1--2,1--3,1--4
思路
我们多举几个例子可以发现发现这道题我们可以统计每个点的度,如果每个点的度数都是偶数就输出YES,否则输出NO。
代码
#include<bits/stdc++.h>
using namespace std;
#define int long long
int du[100001],n,m;
signed main()
{
cin>>n>>m;
for(int i = 1;i <= m;i++)
{
int x,y;
cin>>x>>y;
du[x]++;
du[y]++;
}
for(int i = 1;i <= 100000;i++)
if(du[i] % 2 == 1)
{
cout<<"NO";
return 0;
}
cout<<"YES";
return 0;
}
给定一棵树和一系列操作,每次将树上路径的边权加1,目标是检查是否存在一棵树在执行所有操作后所有边权为偶数。解决方案是统计每个节点的度数,如果所有节点的度数都是偶数,则可能达到条件,否则不能。

被折叠的 条评论
为什么被折叠?



