제출 #1154909

#제출 시각아이디문제언어결과실행 시간메모리
1154909alexddToy Train (IOI17_train)C++20
0 / 100
729 ms1716 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; void dfs(int nod) { if(gasit) return; visited[nod]=1; for(int adj:con[nod]) { if(gasit) return; if(visited[adj]) { gasit=1; return; } 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]==1) { 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...