제출 #795618

#제출 시각아이디문제언어결과실행 시간메모리
795618fatemetmhrToy Train (IOI17_train)C++17
11 / 100
8 ms1624 KiB
// ~ Be Name Khoda ~ // #include "train.h" #include <bits/stdc++.h> //#pragma GCC optimize ("O3") //#pragma GCC target("avx2") //#pragma GCC optimize("unroll-loops,Ofast") using namespace std; typedef long long ll; #define pb push_back #define mp make_pair #define all(x) x.begin(), x.end() #define fi first #define se second const int maxn = 1e6 + 10; const int maxn5 = 5e3 + 10; const int maxnt = 1.2e6 + 10; const int maxn3 = 1e3 + 10; const int mod = 1e9 + 7; const ll inf = 1e18; int cnt[maxn5], q[maxn5]; vector <int> adj[maxn5], jda[maxn5], ret, a; bool good[maxn5][maxn5], mark[maxn5], mark2[maxn5]; int n, m; void solve(int x){ for(int i = 0; i < n; i++) cnt[i] = adj[i].size(); int l = 0, r = 0; for(auto u : jda[x]){ if(a[u]){ q[r++] = u; good[x][u] = true; } else if(cnt[u] > 1) cnt[u]--; else{ q[r++] = u; good[x][u] = true; } } while(l < r){ int v = q[l++]; for(auto u : jda[v]) if(!good[x][u]){ if(a[u]){ q[r++] = u; good[x][u] = true; } else if(cnt[u] > 1) cnt[u]--; else{ q[r++] = u; good[x][u] = true; } } } } std::vector<int> who_wins(std::vector<int> A, std::vector<int> ch, std::vector<int> u, std::vector<int> v) { a = A; n = a.size(); m = u.size(); for(int i = 0; i < m; i++){ adj[u[i]].pb(v[i]); jda[v[i]].pb(u[i]); cnt[u[i]]++; } int l = 0, r = 0; for(int i = 0; i < n; i++) if(ch[i]){ mark[i] = true; q[r++] = i; } while(l < r){ int v = q[l++]; for(auto u : jda[v]) if(!mark[u]){ if(a[u]){ q[r++] = u; mark[u] = true; } else if(cnt[u] > 1) cnt[u]--; else{ q[r++] = u; mark[u] = true; } } } l = 0; r = 0; for(int i = 0; i < n; i++) cnt[i] = adj[i].size(); for(int i = 0; i < n; i++) if(!mark[i]){ mark2[i] = true; q[r++] = i; } while(l < r){ int v = q[l++]; for(auto u : jda[v]) if(!mark2[u]){ if(!a[u]){ q[r++] = u; mark2[u] = true; } else if(cnt[u] > 1) cnt[u]--; else{ q[r++] = u; mark2[u] = true; } } } for(int i = 0; i < n; i++) ret.pb(!mark2[i]); 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...