标签:poj2425 a chess game 博弈 sg函数 模板题
转载请注明出处:http://blog.csdn.net/vmurder/article/details/42653921
其实我就是觉得原创的访问量比未授权盗版多有点不爽233。。。
题意:给一个有向无环图(拓扑图),有若干个棋子,两人轮流操作,每次可以把其中某棋子沿图走一步,无法操作者输。
题解:SG函数裸题,模板题
代码:
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #define N 1005 using namespace std; bool map[N][N]; int n,q,d[N]; int SG[N]; void dfs(int x) { int i,j,k; bool vis[N]={0}; for(i=0;i<n;i++)if(map[x][i]) { if(SG[i]==-1)dfs(i); vis[SG[i]]=1; } for(i=0;vis[i];i++); SG[x]=i; } int main() { // freopen("test.in","r",stdin); int i,j,k,a; while(scanf("%d",&n)!=EOF) { memset(map,0,sizeof(map)); memset(SG,-1,sizeof(SG)); for(i=0;i<n;i++) { scanf("%d",&d[i]); for(j=1;j<=d[i];j++) { scanf("%d",&a); map[i][a]=1; } } for(i=0;i<n;i++)if(SG[i]==-1)dfs(i); while(scanf("%d",&q),q) { k=0; while(q--) { scanf("%d",&a); k^=SG[a]; } if(k)puts("WIN"); else puts("LOSE"); } } return 0; }
【POJ2425】A Chess Game 博弈,SG函数,裸题,模板题
标签:poj2425 a chess game 博弈 sg函数 模板题
原文地址:http://blog.csdn.net/vmurder/article/details/42653921