#include <bits/stdc++.h> using namespace std; typedef int game_result; const int LOSE = 0; const int DRAW = 1; const int WIN = 2; struct relation { int deck_a, deck_b; game_result a_result; }; string solve(int n, const vector<relation>& relations) { vector<game_result> a_decks(n, LOSE); vector<int> win_against_b_count(n, 0); vector<char> can_lose_against_b(n, false); for (const relation& r: relations) { if (r.a_result == WIN) { win_against_b_count[r.deck_b]++; } if (r.a_result == LOSE) { can_lose_against_b[r.deck_b] = true; } } for (int b_deck = 0; b_deck < n; b_deck++) { if (win_against_b_count[b_deck] == n) { return "WYGRANA"; } } if (find(can_lose_against_b.begin(), can_lose_against_b.end(), false) == can_lose_against_b.end()) { return "PRZEGRANA"; } return "REMIS"; } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); int t; cin >> t; for (int test = 0; test < t; test++) { int n, m; cin >> n >> m; vector<relation> relations(m); for (int i = 0; i < m; i++) { int a, b; char w; cin >> a >> w >> b; a--, b--; relations[i].deck_a = a; relations[i].deck_b = b; relations[i].a_result = (w == '>' ? WIN : LOSE); } cout << solve(n, relations) << endl; } }
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 | #include <bits/stdc++.h> using namespace std; typedef int game_result; const int LOSE = 0; const int DRAW = 1; const int WIN = 2; struct relation { int deck_a, deck_b; game_result a_result; }; string solve(int n, const vector<relation>& relations) { vector<game_result> a_decks(n, LOSE); vector<int> win_against_b_count(n, 0); vector<char> can_lose_against_b(n, false); for (const relation& r: relations) { if (r.a_result == WIN) { win_against_b_count[r.deck_b]++; } if (r.a_result == LOSE) { can_lose_against_b[r.deck_b] = true; } } for (int b_deck = 0; b_deck < n; b_deck++) { if (win_against_b_count[b_deck] == n) { return "WYGRANA"; } } if (find(can_lose_against_b.begin(), can_lose_against_b.end(), false) == can_lose_against_b.end()) { return "PRZEGRANA"; } return "REMIS"; } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); int t; cin >> t; for (int test = 0; test < t; test++) { int n, m; cin >> n >> m; vector<relation> relations(m); for (int i = 0; i < m; i++) { int a, b; char w; cin >> a >> w >> b; a--, b--; relations[i].deck_a = a; relations[i].deck_b = b; relations[i].a_result = (w == '>' ? WIN : LOSE); } cout << solve(n, relations) << endl; } } |