您的位置:首页 > 其它

hdu 1524 A Chess Game 博弈论

2013-08-29 16:03 281 查看
SG函数!!

代码如下:

#include<stdio.h>
#include<cstring>
#define I(x) scanf("%d",&x)
int map[1005][1005],sg[1005];
int getsg(int n)
{
if(sg
!=-1) return sg
;
if(!map
[0]) return sg
=0;
bool vis[1001];
memset(vis,0,sizeof(vis));
for(int i=1;i<=map
[0];i++)
vis[getsg(map
[i])]=1;
int i=0;
while(vis[i]) i++;
return sg
=i;
}
int main(){
int i,t,n,s,k,j,m;
while(I(n)!=EOF){
for(i=0;i<n;i++){
I(map[i][0]);
for(j=1;j<=map[i][0];j++)
I(map[i][j]);
}
memset(sg,-1,sizeof(sg));
while(I(m)&&m){
s=0;
for(i=0;i<m;i++){
I(k);
s^=getsg(k);
}
puts(s?"WIN":"LOSE");
}
}
return 0;
}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: