AGC017D

经典结论:树的sg值等于子树sg值+1的异或和
(sg_{fa} oplus= sg_{son}(sonin fa))

#include<cstdio>
#include<vector>
using namespace std;
vector<int>e[100005];
int n;
int dfs(int x,int f){
	int res = 0;
	for(int i = 0;i < e[x].size();++i)
		if(e[x][i] != f) res ^= dfs(e[x][i],x) + 1;
	return res;
}
int main(){
	scanf("%d",&n);int u,v;
	for(int i = 1;i < n;++i){
		scanf("%d%d",&u,&v);
		e[u].push_back(v); e[v].push_back(u);
	}
	puts(dfs(1,0) ? "Alice" : "Bob");
}
原文地址:https://www.cnblogs.com/shikeyu/p/13785884.html