제출 #239486

#제출 시각아이디문제언어결과실행 시간메모리
239486Jatana장난감 기차 (IOI17_train)C++17
11 / 100
107 ms1152 KiB
#include "train.h" #include <iostream> #define le(v) ((int)v.size()) #define x first #define y second #define pb push_back #define f(i, n) for (int i = 0; i < (n); i++) using namespace std; int n, m; vector<int> who; vector<vector<int>> g; vector<int> c; vector<int> who_wins(vector<int> a, vector<int> r, vector<int> u, vector<int> v) { g.clear(); c.clear(); who.clear(); who = a; n = le(a); m = le(u); c = r; g.resize(n); // cerr <<n << endl; // f(i, m) { // cerr << u[i] << " " << v[i] << endl; // } // return c; f(i, m) { g[u[i]].pb(v[i]); } while (true) { vector<int> was = c; for (int i = 0; i < n; i++) { if (who[i] == 1) { // indefinitely for (int sub : g[i]) { if (c[sub]) { c[i] = 1; } } } else { // finitely bool some = false; for (int sub : g[i]) { if (!c[sub]) { some = true; } } if (!some) { c[i] = 1; } } } if (was == c) break; } while (true) { vector<int> was = c; for (int i = 0; i < n; i++) { if (who[i] == 1) { // indefinitely bool some = false; for (int sub : g[i]) { if (c[sub]) { some = true; } } if (!some) { c[i] = 0; } } else { // finitely for (int sub : g[i]) { if (!c[sub]) { c[i] = 0; } } } } if (was == c) break; } return c; // vector<int> res(a.size()); // for(int i = 0; i < (int)res.size(); i++) // res[i] = i % 2; // return res; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...