Submission #1154914

#TimeUsernameProblemLanguageResultExecution timeMemory
1154914alexdd장난감 기차 (IOI17_train)C++20
0 / 100
1092 ms1720 KiB
#include "train.h" #include<bits/stdc++.h> using namespace std; int n; vector<int> rez; vector<int> con[5005],con_rev[5005]; vector<int> a,r; bool bun[5005]; bool visited[5005]; bool gasit; int inc; void dfs(int nod) { if(gasit) return; visited[nod]=1; for(int adj:con[nod]) { if(gasit) return; if(adj==inc) { gasit=1; return; } if(!visited[adj] && r[adj]==0) dfs(adj); } } bool find_cycle(int s) { for(int i=0;i<n;i++) visited[i]=0; gasit=0; dfs(s); return gasit; } bool ceva; void dfs_final(int s) { if(bun[s]) ceva=1; visited[s]=1; for(int adj:con[s]) if(!visited[adj]) dfs_final(adj); } std::vector<int> who_wins(std::vector<int> cit_a, std::vector<int> cit_r, std::vector<int> u, std::vector<int> v) { a = cit_a; r = cit_r; n = a.size(); rez.resize(n); for(int i=0;i<u.size();i++) { con[u[i]].push_back(v[i]); con_rev[v[i]].push_back(u[i]); } for(int i=0;i<n;i++) { bun[i]=0; if(r[i]==0) { inc = i; bun[i] = find_cycle(i); } } for(int i=0;i<n;i++) { //fa un dfs din i si vezi daca poti ajunge la un nod bun for(int j=0;j<n;j++) visited[j]=0; ceva=0; dfs_final(i); if(ceva) rez[i] = 1; else rez[i] = 0; } return rez; }
#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...