#include<bits/stdc++.h>
using namespace std;
std::vector<int> who_wins(std::vector<int> a, std::vector<int> r, std::vector<int> u, std::vector<int> v) {
vector<vector<int>> Next(a.size());
vector<vector<int>> NextInv(a.size());
int n=a.size();
vector<int> prc(n,-1);
std::vector<int> rC=r;
for(int sur=0; sur<n; sur++) {
rC=r;
bool camb=true;
for(int ronda=0; ronda<n && camb; ronda++) {
camb=false;
for(int i=0; i<n; i++) {
if(rC[i]!=1) {
if(a[i]==1) {
for(int j=0; j<Next[i].size(); j++) {
if(rC[Next[i][j]]==1) {
rC[i]=1;
camb=true;
}
}
}
else {
int ns=1;
for(int j=0; j<Next[i].size(); j++) {
ns=ns*rC[Next[i][j]];
}
if(ns==1) {
camb=true;
}
rC[i]=ns;
}
}
}
}
camb=true;
for(int ronda=0; ronda<n && camb; ronda++) {
camb=false;
for(int i=0; i<n; i++) {
if(rC[i]==1) {
if(a[i]==0) {
for(int j=0; j<Next[i].size(); j++) {
if(rC[Next[i][j]]==0) {
rC[i]=0;
camb=true;
}
}
}
else {
int ns=1;
for(int j=0; j<Next[i].size(); j++) {
ns=ns*(1-rC[Next[i][j]]);
}
rC[i]=1-ns;
if(1-ns==0){
camb=true;
}
}
}
}
}
bool ret=true;
for(int i=0; i<n; i++) {
r[i]=r[i] && rC[i];
if(prc[i]!=rC[i]){
ret=false;
}
}
if(false){
vector<int> Sol;
for(int i=0; i<n; i++) {
Sol.push_back(rC[i]);
}
return Sol;
}
prc=rC;
}
vector<int> Sol;
for(int i=0; i<n; i++) {
Sol.push_back(rC[i]);
}
return Sol;
}
# | 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... |