Submission #239001

#TimeUsernameProblemLanguageResultExecution timeMemory
239001ChrisTToy Train (IOI17_train)C++17
0 / 100
1033 ms1656 KiB
#include<bits/stdc++.h> using namespace std; using ll = long long; using pii = pair<int,int>; using pll = pair<ll,ll>; using pli = pair<ll,int>; using ld = long double; #define all(x) (x).begin(),(x).end() const int MN = 5e3 + 5, MM = 2e4 + 5, MOD = 1e9 + 7, BASE = 131; vector<int> adj[MN]; int who[MN], charge[MN], toroot[MN]; bool found; bool vis[MN]; void dfs (int cur) { vis[cur] = 1; for (int i : adj[cur]) { if (vis[i]) { //cycle int cnt = toroot[cur] - toroot[i] + charge[i]; if (cnt) found = 1; } else { toroot[i] = toroot[cur] + charge[i]; dfs(i); } } } vector<int> who_wins(vector<int> a, vector<int> r, vector<int> u, vector<int> v) { int n = a.size(); for (int i = 0; i < n; i++) who[i+1] = a[i], charge[i+1] = r[i]; for (int i = 0; i < (int)u.size(); i++) { adj[u[i]+1].push_back(v[i]+1); } vector<int> ret; for (int rt = 1; rt <= n; rt++) { found = 0; toroot[rt] = charge[rt]; memset(vis,0,sizeof vis); dfs(rt); ret.push_back(found); } return ret; }
#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...