Submission #884384

#TimeUsernameProblemLanguageResultExecution timeMemory
884384abcvuitunggioToy Train (IOI17_train)C++17
0 / 100
7 ms1884 KiB
#include "train.h" #include <bits/stdc++.h> using namespace std; vector <int> ke[5001],ke2[5001],ke3[5001],d; int n,m,vis[5001],p[5001],sz[5001],ch[5001]; stack <int> st; queue <int> q; void dfs(int u){ vis[u]=1; for (int v:ke[u]) if (!vis[v]) dfs(v); st.push(u); } void dfs2(int u){ sz[p[u]]++; vis[u]=1; for (int v:ke2[u]) if (!vis[v]){ p[v]=p[u]; dfs2(v); } } vector <int> who_wins(vector <int> a, vector <int> r, vector <int> u, vector <int> v){ n=a.size(),m=u.size(); for (int i=0;i<m;i++){ if (u[i]==v[i]) ch[u[i]]=1; ke3[v[i]].push_back(u[i]); if (r[u[i]]||r[v[i]]) continue; ke[u[i]].push_back(v[i]); ke2[v[i]].push_back(u[i]); } for (int i=0;i<n;i++) if (!vis[i]) dfs(i); iota(p,p+n,0); memset(vis,0,sizeof(vis)); while (!st.empty()){ int u=st.top(); st.pop(); if (!vis[u]) dfs2(u); } d.assign(n,0); for (int i=0;i<n;i++){ if (!r[i]&&(sz[p[i]]>1||ch[i])){ d[i]=1; q.push(i); } } while (!q.empty()){ int u=q.front(); q.pop(); for (int v:ke3[u]) if (!d[v]){ d[v]=1; q.push(v); } } return d; }
#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...