题目
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
题解
思路
我们仔细观察一下,发现这道题我们可以统计每个点的度(包括出度和入度),最后只要判断每个点度是不是偶数就行了(不懂的可以自己按照代码去模拟一下)。
代码
#include<bits/stdc++.h>
using namespace std;
int n,m,x,y,f[100001];
int main()
{
cin>>n>>m;
for(int i=1;i<=m;i++)
{
cin>>x>>y;
f[x]++;
f[y]++;
}
for(int i=1;i<=100000;i++)
{
if(f[i]%2!=0)
{
cout<<"NO";
return 0;
}
}
cout<<"YES";
return 0;
}