Submission #1243129

#TimeUsernameProblemLanguageResultExecution timeMemory
1243129Tob장난감 기차 (IOI17_train)C++20
100 / 100
492 ms1324 KiB
#include <bits/stdc++.h> #include "train.h" #define F first #define S second #define all(x) x.begin(), x.end() #define pb push_back #define FIO ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0) using namespace std; typedef long long ll; typedef pair <ll, ll> pii; const int N = 5007; int n, m; int a[N], r[N], rdeg[N]; vector <int> adj[N]; vector <int> f(int o, vector <int> v) { queue <int> q; vector <int> deg(n, 0); for (int i = 0; i < n; i++) if (v[i]) q.push(i); while (!q.empty()) { int x = q.front(); q.pop(); for (int y : adj[x]) if (!v[y]) { deg[y]++; if (a[y] == o) v[y] = 1, q.push(y); else if (deg[y] == rdeg[y]) v[y] = 1, q.push(y); } } return v; } vector <int> who_wins(vector <int> aa, vector <int> rr, vector <int> u, vector <int> v) { n = aa.size(), m = u.size(); for (int i = 0; i < n; i++) a[i] = aa[i], r[i] = rr[i]; for (int i = 0; i < m; i++) adj[v[i]].pb(u[i]), rdeg[u[i]]++; vector <int> d(n, 1); while (1) { vector <int> u(n, 1), c(n, 0); for (int i = 0; i < n; i++) if (d[i] && r[i]) c[i] = 1; c = f(1, c); int ok = 1; for (int i = 0; i < n; i++) { if (d[i] && c[i]) u[i] = 0; if (d[i] && !c[i]) ok = 0; } if (ok) break; u = f(0, u); for (int i = 0; i < n; i++) if (d[i] && u[i]) d[i] = 0; } return d; }
#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...