#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; } |