-
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; #define maxn 1002 int map[maxn][maxn]; int sg[maxn]; int DFS(int x,int n) {
-
//博弈论 已哭 if(sg[x]!=-1)return sg[x]; int vis[maxn];memset(vis,0,sizeof(vis)); for(int i=0;i<n;i++) { if(map[x][i]==1) { vis[DFS(i,n)]=1; } } int j; for(j=0;vis[j];j++); return sg[x]=j; } int main() { int n; for(;scanf("%d",&n)==1;) { memset(sg,-1,sizeof(sg)); memset(map,0,sizeof(map)); for(int i=0;i<n;i++) { int num; scanf("%d",&num); if(num==0)sg[i]=0; for(int j=0;j<num;++j) { int K; scanf("%d",&K); map[i][K]=1; } } int C; for(;scanf("%d",&C)&&C;) { int win=0; for(int i=0;i<C;i++) { int x; scanf("%d",&x); win^=DFS(x,n); } if(win)printf("WIN\n"); else printf("LOSE\n"); } } return 0; }
poj2425
最新推荐文章于 2020-03-04 16:38:39 发布