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