Time Limit: 3000MS | Memory Limit: 65536K | |
Total Submissions: 3094 | Accepted: 1266 |
Description
Do you want to challenge me? Just write your program to show your qualification!
Input
Output
Sample Input
4 2 1 2 0 1 3 0 1 0 2 0 2 0 4 1 1 1 2 0 0 2 0 1 2 1 1 3 0 1 3 0
Sample Output
WIN WIN WIN LOSE WIN
#include <istream>
#include <cstring>
#include <cstdio>
#define N 1010
using namespace std;
int g[N];
int n;
bool map[N][N];
int sg(int num)
{
if(g[num] != -1)
return g[num];
int temp = 0;
for (int i = 0; i < n; i++)
{
if (map[num][i])
{
if (sg(i) == temp)
temp++;
}
}
g[num] = temp;
return temp;
}
int main()
{
while (scanf("%d", &n) != EOF)
{
memset(g, -1, sizeof(g));
memset(map, 0, sizeof(map));
for (int i = 0; i < n; i++)
{
int m;
scanf("%d", &m);
int sum = 0;
while (m--)
{
int a;
scanf("%d", &a);
map[i][a] = 1;
sum ++;
}
if(sum == 0)
g[i] = 0;
}
int m;
while (scanf("%d", &m) != EOF && m)
{
int res = 0;
while (m--)
{
int a;
scanf("%d", &a);
res = res ^ sg(a);
}
if(res == 0)
printf("LOSE\n");
else
printf("WIN\n");
}
}
return 0;
}