对数深度为偶数的节点,不需要考虑,因为这是必败态,留给对手,每次对手动,跟进就可以了。
对于奇数深度的节点是正常比赛的关键,并且这些节点符合Nim博弈。
#include<iostream>
using namespace std;
const int maxn=1e5+5;
int dep[maxn];
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n;
scanf("%d",&n);
int ans=0;
dep[0]=0;
for(int i=1;i<n;i++) {int fa;scanf("%d",&fa);dep[i]=dep[fa]+1;}
for(int i=0;i<n;i++)
{
int x;
scanf("%d",&x);
if(dep[i]&1) ans^=x;
}
if(ans) cout<<"win"<<endl;
else cout<<"lose"<<endl;
}
return 0;
}