Submission #424234

#TimeUsernameProblemLanguageResultExecution timeMemory
424234cfalasToy Train (IOI17_train)C++14
11 / 100
845 ms1740 KiB
#include "train.h" #include<bits/stdc++.h> using namespace std; #define mp make_pair #define INF 10000000 #define MOD 1000000007 #define MID ((l+r)/2) #define HASHMOD 2305843009213693951 #define ll long long #define ull unsigned long long #define F first #define S second typedef pair<ll, ll> ii; typedef pair<ii, int> iii; typedef vector<int> vi; typedef vector<ii> vii; typedef map<int, int> mii; #define EPS 1e-6 #define FOR(i,n) for(int i=0;i<((int)(n));i++) #define FORi(i,a,b) for(int i=((int)(a));i<((int)(b));i++) #define FOA(v, a) for(auto &v : a) #define len(x) ((int)x.size()) vector<vi> adj; vector<vi> rev; vi vis; vi r; void dfs(int s){ vis[s] = 1; for(auto v : adj[s]){ if(!vis[v]) dfs(v); } vis[s] = 2; } vi who_wins(vi a, vi rr, vi u, vi v) { r = rr; int n = len(a); adj.assign(n, vi()); rev.assign(n, vi()); vis.assign(n,0); vi res(n, 0); FOR(i, len(u)){ adj[u[i]].push_back(v[i]); rev[v[i]].push_back(u[i]); } set<int> loop; FOR(i,n){ if(r[i]==0) continue; vis.assign(n,0); dfs(i); FOA(v,rev[i]) if(vis[v] && r[i]) loop.insert(i); } queue<int> q; vi used(n, 0); FOA(v,loop) q.push(v), used[v] = true; while(!q.empty()){ int t = q.front(); q.pop(); res[t] = 1; FOA(v,rev[t]){ if(!used[v]){ used[v] = true; q.push(v); } } } 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...