Submission #790054

#TimeUsernameProblemLanguageResultExecution timeMemory
790054NothingXDToy Train (IOI17_train)C++17
0 / 100
557 ms1568 KiB
#include "train.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef double ld; typedef pair<int,int> pii; typedef pair<ll,ll> pll; typedef complex<ld> point; void debug_out(){cerr << endl;} template<typename Head, typename... Tail> void debug_out(Head H, Tail... T){ cerr << H << ' '; debug_out(T...); } #define debug(...) cerr << "(" << #__VA_ARGS__ << "): ", debug_out(__VA_ARGS__) #define F first #define S second #define all(x) x.begin(), x.end() #define MP(x, y) make_pair(x, y) const int maxn = 1e4 + 10; int n, m; ll h[maxn]; vector<pair<pii,int>> edge; vector<int> g[maxn]; bool vis[maxn]; void dfs(int v){ //debug(v); vis[v] = true; for (auto u: g[v]){ if (!vis[u]) dfs(u); } } vector<int> who_wins(vector<int> a, vector<int> r, vector<int> u, vector<int> v) { n = a.size(); m = u.size(); for (int i = 0; i < m; i++){ v[i] += n; edge.push_back({{u[i], v[i]}, 1}); //debug(u[i], v[i], 1); v[i] -= n; g[v[i]].push_back(u[i]); } for (int i = 0; i < n; i++){ if (r[i]){ edge.push_back({{i+n, i}, -(n+1)}); //debug(i, i+n, -n-1); } else{ edge.push_back({{i+n, i}, 0}); //debug(i, i+n, 0); } } memset(h, 0, sizeof h); memset(vis, false, sizeof vis); for (int i = 1; i <= 2*n; i++){ for (auto x: edge){ if (i >= 2*n && h[x.F.S] > h[x.F.F] + x.S){ int u = x.F.S; if (u >= n) u -= n; if (!vis[u]) dfs(u); } h[x.F.S] = min(h[x.F.S], h[x.F.F] + x.S); } } vector<int> ans(n); for (int i = 0; i < n; i++){ ans[i] = (!vis[i]); } 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...