仿照阶梯博弈来思考,很显然只有奇数层(
0
在第
#include<cstdio>
#include<vector>
#include<algorithm>
using namespace std;
const int maxn=100010;
vector<int> son[maxn];
int n,a[maxn],ans;
void dfs(int u,int flag)
{
if (flag) ans^=a[u];
for (vector<int>::iterator it=son[u].begin();it!=son[u].end();++it) dfs(*it,flag^1);
}
int solve()
{
int x;
scanf("%d",&n);
for (int i=0;i<n;i++) son[i].clear();
for (int i=1;i<n;i++)
{
scanf("%d",&x);
son[x].push_back(i);
}
for (int i=0;i<n;i++) scanf("%d",&a[i]);
ans=0;
dfs(0,0);
return ans;
}
int main()
{
int T;
scanf("%d",&T);
while (T--)
if (solve()) printf("win\n");
else printf("lose\n");
}