1 2 3 4

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;
}
posted @ 2021-03-25 07:52  snuonuo  阅读(29)  评论(0)    收藏  举报