题目链接:https://codeforces.com/contest/1363/problem/C
题意:给一个无向图,两个人每次只能选取其中一个叶子节点拿走,谁先拿到题目给定的特殊节点就赢。
思路:最简单的情况就是当特殊节点在叶子节点时先手直接赢,然后讨论当特殊节点是非叶子节点时,这时候双方采取的最优策略就是不让它成为叶子节点,因此一定会拿完其它节点再去拿特殊节点,这样问题就转化成了有n个数从一开始取数,谁先取到n就赢,所以跟n的奇偶是有关的,当n为奇数时先手赢,n为偶数时后手赢,这边只要算一下每个点的度即可。
代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=2e5+10;
int d[2001];
void init(){
for(int i=0;i<2001;i++) d[i]=0;
}
int main()
{
int t,n,x;
cin>>t;
while(t--){
cin>>n>>x;
int u,v;
init();
for(int i=0;i<n-1;i++){
cin>>u>>v;
d[u]++;d[v]++;
}
if(d[x]<=1) cout<<"Ayush"<<endl;
else{
if(n&1) cout<<"Ashish"<<endl;
else cout<<"Ayush"<<endl;
}
}
return 0;
}