제출 #390030

#제출 시각아이디문제언어결과실행 시간메모리
390030Keshi장난감 기차 (IOI17_train)C++17
0 / 100
31 ms15564 KiB
//In the name of God #include <bits/stdc++.h> #include "train.h" using namespace std; typedef int ll; typedef pair<ll, ll> pll; const ll maxn = 2e5 + 100; const ll mod = 1e9 + 7; const ll inf = 1e9; #define fast_io ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); #define file_io freopen("input.txt", "r+", stdin);freopen("output.txt", "w+", stdout); #define pb push_back #define Mp make_pair #define F first #define S second #define Sz(x) ll((x).size()) #define all(x) (x).begin(), (x).end() ll n, m, c[maxn], t; bool del[maxn], ok[maxn], vis[maxn], w[maxn], okk[maxn]; bool sub1 = 1, sub3 = 1, sub4 = 1; vector<ll> vec, g[maxn], gp[maxn], com[maxn]; void dfs(ll v){ vis[v] = 1; if(del[v]) return; for(ll u : g[v]){ if(!vis[u]) dfs(u); } vec.pb(v); } void sfd(ll v){ vis[v] = 1; if(del[v]) return; for(ll u : gp[v]){ if(!vis[u]) sfd(u); } c[v] = t; com[t].pb(v); if(ok[v]) okk[t] = 1; } bool solve(ll v){ if(w[v]) return 1; vis[v] = 1; for(ll u : g[v]){ if(!vis[u] && solve(u)) return 1; } return 0; } vector<int> who_wins(vector<int> a, vector<int> r, vector<int> v, vector<int> u){ n = Sz(a); m = Sz(v); for(ll i = 0; i < m; i++){ if(u[i] != v[i] && u[i] != v[i] + 1) sub1 = 0; g[v[i]].pb(u[i]); gp[u[i]].pb(v[i]); } vector<int> res(n); for(ll i = 0; i < n; i++){ if(a[i]) sub4 = 0; else sub3 = 0; } for(ll i = 0; i < n; i++){ if(sub3) ok[i] = r[i]; else ok[i] = 1; if(sub4) del[i] = r[i]; } for(ll i = 0; i < n; i++){ if(!vis[i]) dfs(i); } fill(vis, vis + n, 0); reverse(all(vec)); for(ll i = 0; i < n; i++){ if(!vis[i]){ sfd(i); t++; } } for(ll i = 0; i < n; i++){ if(del[i]) continue; for(ll j : g[i]){ if(i == j && ok[i]) w[i] = 1; } if(okk[c[i]]) w[i] = 1; } for(ll i = 0; i < n; i++){ fill(vis, vis + n, 0); res[i] = 1 ^ solve(i); if(sub4) res[i] ^= 1; } 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...