Submission #790125

#TimeUsernameProblemLanguageResultExecution timeMemory
790125fatemetmhrToy Train (IOI17_train)C++17
11 / 100
1070 ms25672 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 = 5e5 + 10; const int maxnt = 1.2e6 + 10; const int maxn3 = 1e3 + 10; const int mod = 1e9 + 7; const ll inf = 1e18; int cnt[maxn5], cmp[maxn5]; int num = 0; vector <int> adj[maxn5], jda[maxn5], ver; bool mark[maxn5], loop[maxn5], good[maxn5], rem[maxn5]; void dfs1(int v){ mark[v] = true; for(auto u : adj[v]) if(!mark[u] && !rem[u]) dfs1(u); ver.pb(v); } void dfs2(int v){ mark[v] = true; cmp[v] = num; cnt[num]++; for(auto u : jda[v]) if(!mark[u] && !rem[u]) dfs2(u); } std::vector<int> who_wins(std::vector<int> a, std::vector<int> r, std::vector<int> u, std::vector<int> v) { int 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]); if(u[i] == v[i]) loop[u[i]] = true; } for(int i = 0; i < n; i++) if(r[i]) rem[i] = true; for(int i = 0; i < n; i++) if(!mark[i] && !rem[i]) dfs1(i); reverse(all(ver)); memset(mark, false, sizeof mark); for(auto u : ver) if(!mark[u] && !rem[u]){ dfs2(u); num++; } for(int i = 0; i < n; i++) if(!rem[i] && (loop[i] || cnt[cmp[i]] > 1)) good[i] = true; vector <int> ans; for(int i = 0; i < n; i++) if(r[i]) rem[i] = false; for(int i = 0; i < n; i++){ memset(mark, false, sizeof mark); ver.clear(); dfs1(i); bool re = true; for(int j = 0; j < n; j++) if(good[j] && mark[j]) re = false; ans.pb(re); } 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...