20210324AtCoder刷题
AGC014 B - Unplanned Queries
-
题意:
假设有n个节点的树,有m条询问:每条询问在a-b路径上的没一条边权值+1.问:是否存在一种树的构造使m条操作完成后树上每一条边的权值为偶数。 -
思路:
一个点只要出现过偶数次,那么就相当于他不会影响构造树的结果。
一个点若出现奇数次,只要再有奇数个询问的路径经过他,他也可以变成偶数,但是这同时又让另一些点的连边必须是奇数。
故:得结论,所有点均出现偶数次才能使结果为“YES”,与树的构造无关。 -
Code:
#pragma GCC optimize(3,"Ofast","inline")
#include<bits/stdc++.h>
#define ll long long
#define maxn 1000005
#define inf 1e9
#define pb push_back
#define rep(i,a,b) for(int i=a;i<=b;i++)
#define per(i,a,b) for(int i=a;i>=b;i--)
using namespace std;
inline int read()
{
int x=0,w=1; char c=getchar();
while(c<'0'||c>'9') {if(c=='-') w=-1; c=getchar();}
while(c<='9'&&c>='0') {x=(x<<1)+(x<<3)+c-'0'; c=getchar();}
return w==1?x:-x;
}
int n,m,x,y,a[maxn];
int main()
{
// freopen("t1.in","r",stdin);
cin>>n>>m;
rep(i,1,m)
{
x=read();y=read();
a[x]++;a[y]++;
}
int fl=0;
rep(i,1,n) if(a[i]%2!=0) {fl=1;break;}
if(fl) printf("NO\n");
else printf("YES\n");
return 0;
}

浙公网安备 33010602011771号