#include <cstdio> #define MAXN 100005 int t,n,m,a,b; char c; struct Node { int from,to; } N[2*MAXN]; bool isWin() { for(int i=1;i<=n;i++) if(!N[i].from) return false; for(int i=1;i<=n;i++) if(N[MAXN+i].to == n) return true; return false; } bool isLoss() { for(int i=1;i<=n;i++) if(!N[MAXN+i].from) return false; return true; } int main() { scanf("%d",&t); while(t--) { scanf("%d %d",&n,&m); for(int i=1;i<=n;i++) N[i].from = N[i].to = N[MAXN+i].from = N[MAXN+i].to = 0; for(int i=0;i<m;i++) { scanf("%d %c %d",&a,&c,&b); if(c == '>') { N[a].from++; N[MAXN+b].to++; } else { N[a].to++; N[MAXN+b].from++; } } if(isWin()) printf("WYGRANA\n"); else if(isLoss()) printf("PRZEGRANA\n"); else printf("REMIS\n"); } 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 | #include <cstdio> #define MAXN 100005 int t,n,m,a,b; char c; struct Node { int from,to; } N[2*MAXN]; bool isWin() { for(int i=1;i<=n;i++) if(!N[i].from) return false; for(int i=1;i<=n;i++) if(N[MAXN+i].to == n) return true; return false; } bool isLoss() { for(int i=1;i<=n;i++) if(!N[MAXN+i].from) return false; return true; } int main() { scanf("%d",&t); while(t--) { scanf("%d %d",&n,&m); for(int i=1;i<=n;i++) N[i].from = N[i].to = N[MAXN+i].from = N[MAXN+i].to = 0; for(int i=0;i<m;i++) { scanf("%d %c %d",&a,&c,&b); if(c == '>') { N[a].from++; N[MAXN+b].to++; } else { N[a].to++; N[MAXN+b].from++; } } if(isWin()) printf("WYGRANA\n"); else if(isLoss()) printf("PRZEGRANA\n"); else printf("REMIS\n"); } return 0; } |