Submission #1015307

#TimeUsernameProblemLanguageResultExecution timeMemory
1015307hotboy2703Toy Train (IOI17_train)C++17
0 / 100
48 ms1628 KiB
#include "train.h" #include<bits/stdc++.h> using namespace std; using ll = int; #define pll pair <ll,ll> #define fi first #define se second #define MP make_pair #define sz(a) (ll((a).size())) #define BIT(mask,i) (((mask) >> (i))&1) #define MASK(i) (1LL << (i)) const ll MAXN = 5e3+10; vector <ll> g[MAXN]; ll cnt[MAXN]; bool in[MAXN]; std::vector<int> who_wins(std::vector<int> a, std::vector<int> r, std::vector<int> u, std::vector<int> v) { ll n = sz(a); for (ll i = 0;i < sz(u);i ++){g[u[i]].push_back(v[i]);cnt[v[i]]++;} vector <ll> res(n,-1); while (1){ vector <ll> R; for (ll i = 0;i < n;i ++){ if (res[i] == -1 && r[i]){ R.push_back(i); in[i] = 1; } } if (sz(R)==0){ for (ll i = 0;i < n;i ++){ res[i] = 0; break; } } ll ptr = 0; while (ptr < sz(R)){ ll u = R[ptr]; ptr++; for (auto v:g[u]){ if (in[v])continue; if (a[v]){ in[v] = 1; R.push_back(v); } else { cnt[v]--; if (cnt[v]==0){in[v] = 1;R.push_back(v);} } } } // for (auto x:R)cout<<x<<' '; // cout<<endl; vector <ll> X; for (ll i = 0;i < n;i ++){ if (res[i] == -1 && !in[i]){X.push_back(i);in[i] = 1;} } if (sz(X)==0){ for (auto u:R){ res[u] = 1; } break; } for (auto u:R){ in[u] = 0; for (auto v:g[u]){ if (!a[v])cnt[v]++; } } R=X; ptr = 0; while (ptr < sz(R)){ ll u = R[ptr]; ptr++; for (auto v:g[u]){ if (in[v])continue; if (!a[v]){ in[v] = 1; R.push_back(v); } else { cnt[v]--; if (cnt[v]==0){in[v] = 1;R.push_back(v);} } } } for (auto u:R){ res[u] = 0; in[u] = 0; for (auto v:g[u]){ if (a[v])cnt[v]++; } } } return res; }
#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...