#include <bits/stdc++.h>
//#include "train.h"
using namespace std;
const int N=5001;
vector<int> g[N];
bool vis[N];
bool f[N];
bool lav[N];
bool dfs(int node){
vis[node]=1;
bool an=0;
if(lav[node]){
return 1;
}
for(auto i:g[node]){
if(vis[i]){
continue;
}
an=an|dfs(i);
}
return an;
}
void dfs2(int node,int root){
for(auto i:g[node]){
if(i==root){
lav[root]=1;
return;
}
if(!vis[i]){
dfs2(i,root);
}
}
}
vector<int> who_wins(std::vector<int> a, std::vector<int> r, std::vector<int> u, std::vector<int> v) {
int n=a.size();
int m=u.size();
for(int i=0;i<m;++i){
g[u[i]].push_back(v[i]);
}
for(int i=0;i<n;++i){
f[i]=r[i];
}
if(a[0]){
vector<int> answ;
for(int i=0;i<n;++i){
for(int j=0;j<n;++j){
vis[j]=0;
}
if(f[i]){
dfs2(i,i);
}
}
for(int i=0;i<n;++i){
for(int j=0;j<n;++j){
vis[j]=0;
}
answ.push_back(dfs(i));
}
return answ;
}
return {};
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |