POJ6324

题目链接

 给定一棵n个点的树,每个点有对应的权值,先手取任意数目的点,但他所取得任意两个点不相邻。后手取剩下的所有点。二者谁的异或和大谁赢。

 思路:

  先手不可能输,如果所有点的权值异或和为0,则为平局。

#include<bits/stdc++.h>
using namespace std;

int a[100010];

int main()
{
    int T;
    scanf("%d",&T);
    while(T--)
    {
        int n;
        int i;
        int sum=0;
        scanf("%d",&n);
        for(i=1;i<=n;i++)
        {
            scanf("%d",&a[i]);
            sum^=a[i];
        }
        for(i=1;i<=n-1;i++)
        {
            int x,y;
            scanf("%d%d",&x,&y);
        }
        if(sum==0)
            printf("D\n");
        else
            printf("Q\n");
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/jinghui_7/article/details/81298085
POJ