您的位置:首页 > 其它

HDU_1524 A Chess Game (sg函数)

2011-10-11 17:32 260 查看
  /*今天一翻以前做的sg函数的题,这题原来的代码居然跑781MS, 我晕!又重新写
了一遍,开始vis数组定义成全局变量了,WA。。。T_T

My Code(78+MS):*/

#include <iostream>
#include <cstdio>
#include <cstring>

using namespace std;

const int N = 1005;

struct node{
int num;
int edg
;
}e
;

int sg
;

int mex(int t){
if(sg[t] != -1)    return sg[t];
int i;
bool vis
= {0};

for(i = 0; i < e[t].num; i++){
vis[mex(e[t].edg[i])] = 1;
}
for(i = 0; ; i++){
if(!vis[i]){
sg[t] = i;
break;
}
}
return sg[t];
}

int main(){
//freopen("data.in", "r", stdin);

int n, i, j, m, flag, k;
while(~scanf("%d", &n)){
memset(e, 0, sizeof(e));
for(i = 0; i < n; i++){
scanf("%d", &e[i].num);
for(j = 0; j < e[i].num; j++){
scanf("%d", &e[i].edg[j]);
}
}
for(i = 0; i < N; i++){
sg[i] = -1;
}
for(i = 0; i < n; i++){
mex(i);
}
while(scanf("%d", &m), m){
flag = 0;
while(m--){
scanf("%d", &k);
flag ^= sg[k];
}
if(flag)    puts("WIN");
else    puts("LOSE");
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: