#include "train.h"
#include <bits/stdc++.h>
#define int long long
#define pii pair<int,int>
#define vi vector<int>
#define ff first
#define ss second
#define sp << " " <<
#define all(x) x.begin(),x.end()
using namespace std;
vi ans,go,chk;
vector<vi> edges,egdes;
void dfs(int node) {
if (ans[node]) return;
ans[node] = 1;
for (auto it : egdes[node]) {
dfs(it);
}
}
int fl;
void dfs2(int node) {
if (go[node]) return;
go[node] = 1;
for (auto it : edges[node]) {
dfs2(it);
}
}
void check(int node,int root) {
if (chk[node]) return;
chk[node] = 1;
for (auto it : edges[node]) {
if (it == root){
fl = 1;
check(it,root);
}
}
}
std::vector<int32_t> who_wins(std::vector<int32_t> a, std::vector<int32_t> r, std::vector<int32_t> u, std::vector<int32_t> v) {
int n = a.size();
std::vector<int32_t> res(n);
ans.assign(n,0);
go.assign(n,0);
edges.resize(n);
egdes.resize(n);
int m = u.size();
for (int i = 0;i<m;i++) {
edges[u[i]].push_back(v[i]);
egdes[v[i]].push_back(u[i]);
}
if (*min_element(all(a)) == 1) {
//hepsi benim
for (int i = 0;i<n;i++) {
if (r[i]) {
chk.assign(n,0);
fl = 0;
check(i,i);
if (!fl) continue;
dfs(i),dfs2(i);
}
}
for (int i = 0;i<n;i++) res[i] = ans[i]&&go[i];
}
else if (*max_element(all(a)) == 0) {
//hepsi onun
}
return res;
}
# | 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... |