Submission #139974

#TimeUsernameProblemLanguageResultExecution timeMemory
139974shashwatchandraToy Train (IOI17_train)C++17
11 / 100
2065 ms50336 KiB
#include "train.h" #include <bits/stdc++.h> using namespace std; #define pb push_back #define REP(i,n) for(int i = 0;i < n;i++) const int N = 5001; bool reach[N][N]; bool reach2[N][N]; int n,m; vector<int> adj[N]; int source = 0; void dfs(int u){ for(int v:adj[u]){ if(reach[source][v])continue; reach[source][v] = 1; dfs(v); } } void dfs1(int u,vector<int> &r){ for(int v:adj[u]){ if(reach2[source][v] or r[v])continue; reach2[source][v] = 1; dfs1(v,r); } } vector<int> who_wins(vector<int> a, vector<int> r,vector<int> u, vector<int> v) { n = a.size(); m = u.size(); REP(i,m){ adj[u[i]].pb(v[i]); } while(source < n){ dfs(source); dfs1(source,r); source++; } vector<int> ans; REP(i,n){ bool done = 0; REP(j,n){ if(r[j])continue; if(reach[i][j] and reach2[j][j]){ done = 1; } } ans.pb(!done); } 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...