hdu 3094——A tree game
题意:
一颗树,然后两个操作,一是删除一条边,二是移除不与根相连的部分。
思路:
树上博弈的基础题目。
code:
#include <bits/stdc++.h>
using namespace std;
const int N=1e5+5;
std::vector<int> v[N];
int dfs(int u,int p){
int ans=0;
for (int i=0;i<v[u].size();i++){
int k=v[u][i];
if (k!=p){
ans^=(dfs(k,u)+1);
}
}
return ans;
}
int main(){
int T,n;
scanf("%d",&T);
while (T--){
scanf("%d",&n);
for (int i=0;i<=n;i++) v[i].clear();
for (int i=1;i<n;i++){
int x,y;
scanf("%d%d",&x,&y);
v[x].push_back(y);
v[y].push_back(x);
}
if (dfs(1,-1)) puts("Alice");
else puts("Bob");
}
}
还没有评论,来说两句吧...