| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 269697 | hamerin | Toy Train (IOI17_train) | C++17 | 1941 ms | 1452 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "train.h"
#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
using namespace std;
using i64 = long long;
using d64 = long double;
using pi = pair<int, int>;
using pli = pair<i64, i64>;
using ti = tuple<int, int, int>;
using tli = tuple<i64, i64, i64>;
#define iterall(cont) cont.begin(), cont.end()
#define prec(n) setprecision(n) << fixed
vector<int> who_wins(vector<int> a, vector<int> r, vector<int> u,
vector<int> v) {
const size_t N = a.size();
const size_t M = u.size();
vector<vector<int>> invGraph(N);
vector<int> outdeg(N);
for (auto i = 0; i < M; i++) {
invGraph[v[i]].emplace_back(u[i]);
outdeg[u[i]]++;
}
vector<bool> notBWin(N);
// 몰라 대충 N번 돌리면 되겠지
for (auto __loop = 0; __loop < N; __loop++) {
vector<int> curoutdeg(N);
queue<int> que;
fill(iterall(notBWin), false);
for (auto i = 0; i < N; i++)
if (r[i]) que.emplace(i), notBWin[i] = true;
while (!que.empty()) {
auto cur = que.front();
que.pop();
for (auto el : invGraph[cur]) {
if (notBWin[el]) continue;
curoutdeg[el]++;
if (a[el] || (!a[el] && curoutdeg[el] == outdeg[el])) {
notBWin[el] = true;
que.emplace(el);
}
}
}
fill(iterall(curoutdeg), 0);
for (auto i = 0; i < N; i++)
if (!notBWin[i]) que.emplace(i);
while (!que.empty()) {
auto cur = que.front();
que.pop();
for (auto el : invGraph[cur]) {
if (!notBWin[el]) continue;
curoutdeg[el]++;
if (!a[el] || (a[el] && curoutdeg[el] == outdeg[el])) {
notBWin[el] = false;
que.emplace(el);
}
}
}
for(int i=0;i<N;i++) if(!notBWin[i] && r[i]) r[i] = false;
}
vector<int> ret;
copy(iterall(notBWin), back_inserter(ret));
return ret;
}
Compilation message (stderr)
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
