http://acm.hdu.edu.cn/showproblem.php?pid=1524 1 #include <iostream>
2 #include <vector>
3
4 using namespace std;
5 int dp[1006];
6 struct Node
7 {
8 vector<int> next;
9 };
10 vector<Node> vec;
11 int dfs(int k)
12 {
13 int hash[100];
14 memset(hash,0,sizeof(hash));
15
16 for(int i=0;i<vec[k].next.size();++i){
17 if(dp[vec[k].next[i]]==-1)
18 dp[vec[k].next[i]]=dfs(vec[k].next[i]);
19 hash[dp[vec[k].next[i]]]=1;
20 }
21
22 for(int i=0;i<100;i++){
23 if(hash[i]==0)return i;
24 }
25 };
26 int main()
27 {
28 int n;
29 while(scanf("%d",&n)!=EOF){
30 vec.clear();
31 vec.resize(1005);
32 memset(dp,-1,sizeof(dp));
33 int k;
34 for(int i=0;i<n;i++){
35 scanf("%d",&k);
36 int a;
37 while(k--){
38 scanf("%d",&a);
39 vec[i].next.push_back(a);
40 }
41 }
42 int m;
43 while(scanf("%d",&m),m){
44 int sg=0;
45 for(int i=0;i<m;i++){
46 scanf("%d",&k);
47 if(dp[k]==-1)
48 dp[k]=dfs(k);
49 sg^=dp[k];
50 }
51 if(sg==0){
52 printf("LOSE\n");
53 }
54 else printf("WIN\n");
55 }
56 }
57 return 0;
58 }
59
posted on 2008-07-24 11:10
小果子 阅读(354)
评论(0) 编辑 收藏 引用