Submission #134142

#TimeUsernameProblemLanguageResultExecution timeMemory
134142IOrtroiii장난감 기차 (IOI17_train)C++14
100 / 100
688 ms1528 KiB
#include <bits/stdc++.h> #include "train.h" using namespace std; vector<int> who_wins(vector<int> a, vector<int> r, vector<int> u, vector<int> v) { int n = a.size(); int m = u.size(); vector<int> deg(n); vector<vector<int>> g(n); for (int i = 0; i < m; ++i) { ++deg[u[i]]; g[v[i]].push_back(u[i]); } while (true) { vector<int> ans = r; { queue<int> q; vector<int> cdeg = deg; for (int i = 0; i < n; ++i) { if (ans[i]) { q.push(i); } } while (!q.empty()) { int u = q.front(); q.pop(); for (int v : g[u]) { if (!ans[v]) { if (a[v] || (--cdeg[v]) == 0) { ans[v] = 1; q.push(v); } } } } } { queue<int> q; vector<int> cdeg = deg; for (int i = 0; i < n; ++i) { if (!ans[i]) { q.push(i); } } while (!q.empty()) { int u = q.front(); q.pop(); for (int v : g[u]) { if (ans[v]) { if (!a[v] || (--cdeg[v]) == 0) { ans[v] = 0; q.push(v); } } } } } bool finish = true; for (int i = 0; i < n; ++i) { if (!ans[i] && r[i]) { r[i] = 0; finish = false; } } if (finish) { return ans; } } }
#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...