题意
Alice和Bob轮流对一棵N个点的树染色。开始时Alice选择一个点染色,之后每次只能对Alice染色的点相邻的点染色,先不能操作者输。
T<=100, N<=100
题解
手玩了一下,先发现Ailce仅胜利在偶数节点的菊花树,进而在偶叉树上。
Bob只需要保证局面中存在奇点即可。
所以Alice胜利当且仅当图中仅有一个偶点。
1 #include <bits/stdc++.h> 2 using namespace std; 3 4 int d[110]; 5 6 int main() 7 { 8 int T; 9 scanf("%d", &T); 10 while (T--) 11 { 12 memset(d, 0, sizeof(d)); 13 int n; 14 scanf("%d", &n); 15 for (int i = 1; i < n; ++i) 16 { 17 int u, v; 18 scanf("%d%d", &u, &v); 19 d[u]++; 20 d[v]++; 21 } 22 23 int pd(0); 24 for (int i = 1; i <= n; ++i) 25 if (d[i] % 2 == 0) 26 pd++; 27 28 if (pd == 1) 29 puts("Alice"); 30 else 31 puts("Bob"); 32 } 33 34 return 0; 35 }