Codeforces Round #646 (Div. 2) C、Game On Leaves
题目链接:C、Game On Leaves
题意:
给你一个n个节点的无根树,你每次可以删除一个叶节点。如果谁先删除x号节点谁就赢了。两个人轮流操作
题解:
如果x号节点本身就是一个叶节点,那么谁先走,谁赢
否则,也就是只有剩下两个节点时候才能移动x号节点,只需要判断n-2的奇偶性就可以了
代码:
#include<stdio.h> #include<algorithm> #include<iostream> #include<string> #include<queue> #include<deque> #include<string.h> #include<map> #include <iostream> #include <math.h> #define Mem(a,b) memset(a,b,sizeof(a)) const double II = acos(-1); const double PP = (II*1.0)/(180.00); using namespace std; typedef long long ll; const int INF=0x3f3f3f3f; const int maxn=1000+10; int in[maxn]; int main() { int t; cin>>t; while(t--) { int n,x; cin>>n>>x; memset(in,0,sizeof(in)); for(int i=1; i<=n-1; i++) { int u,v; cin>>u>>v; in[u]++; in[v]++; } if(n==1||in[x]==1||n%2==0) { cout<<"Ayush"<<endl; } else cout<<"Ashish"<<endl; } }