#include<cstdio>
#include<queue>
#include<vector>
using namespace std;
int ta[20][20], *avis, *bvis;
int n;
int f(int g, int t)
{
int i, p, q, w;
if(g==1)
{
for(i=1; i <= n; i++)
{
if(!avis[i])
{
p=i;
}
if(!bvis[i])
q=i;
}
return ta[p][q];
}
if(t==1)
{
w=-1;
for(i=1; i <= n; i++)
{
if(!bvis[i])
{
bvis[i]=1;
w = max(w, f(g, 0));
bvis[i]=0;
}
if(w==1)
break;
}
}
else
{
w=1;
for(i=1; i <= n; i++)
{
if(!avis[i])
{
avis[i]=1;
w=min(w, f(g-1, 1));
avis[i]=0;
}
if(w==-1)
break;
}
}
return w;
}
int main()
{
int t, m, i, j, p, q, k;
char c;
scanf("%d", &t);
for(i=0; i < t; i++)
{
scanf("%d%d", &n, &m);
avis = new int[n+1];
bvis = new int[n+1];
for(j=0; j <=n; j++)
{
avis[j]=0;
bvis[j]=0;
for(k=0; k<= n; k++)
{
ta[j][k]=0;
}
}
for(j =0; j < m; j++)
{
scanf("%d %c %d", &p, &c, &q);
if(c=='>')
{
ta[p][q]=1;
}
else
{
ta[p][q]=-1;
}
}
int wynik = f(n, 1);
if(wynik==1)
printf("WYGRANA\n");
else if(wynik==-1)
printf("PRZEGRANA\n");
else
printf("REMIS\n");
delete [] avis, bvis;
}
return 0;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 | #include<cstdio> #include<queue> #include<vector> using namespace std; int ta[20][20], *avis, *bvis; int n; int f(int g, int t) { int i, p, q, w; if(g==1) { for(i=1; i <= n; i++) { if(!avis[i]) { p=i; } if(!bvis[i]) q=i; } return ta[p][q]; } if(t==1) { w=-1; for(i=1; i <= n; i++) { if(!bvis[i]) { bvis[i]=1; w = max(w, f(g, 0)); bvis[i]=0; } if(w==1) break; } } else { w=1; for(i=1; i <= n; i++) { if(!avis[i]) { avis[i]=1; w=min(w, f(g-1, 1)); avis[i]=0; } if(w==-1) break; } } return w; } int main() { int t, m, i, j, p, q, k; char c; scanf("%d", &t); for(i=0; i < t; i++) { scanf("%d%d", &n, &m); avis = new int[n+1]; bvis = new int[n+1]; for(j=0; j <=n; j++) { avis[j]=0; bvis[j]=0; for(k=0; k<= n; k++) { ta[j][k]=0; } } for(j =0; j < m; j++) { scanf("%d %c %d", &p, &c, &q); if(c=='>') { ta[p][q]=1; } else { ta[p][q]=-1; } } int wynik = f(n, 1); if(wynik==1) printf("WYGRANA\n"); else if(wynik==-1) printf("PRZEGRANA\n"); else printf("REMIS\n"); delete [] avis, bvis; } return 0; } |
English