# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
372478 | doowey | Toy Train (IOI17_train) | C++14 | 1568 ms | 1772 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#include "train.h"
using namespace std;
typedef pair<int, int> pii;
typedef long long ll;
#define fi first
#define se second
#define mp make_pair
const int N = 5010;
bool ban[N];
bool inq[N];
int n, m;
vector<int> a;
vector<int> r;
vector<int> u;
vector<int> v;
vector<int> in[N];
int deg[N];
vector<int> f(int bit, vector<int> init){
for(int i = 0 ; i < n; i ++ ){
inq[i]=false;
in[i].clear();
deg[i]=0;
}
queue<int> ads;
for(auto x : init){
ads.push(x);
inq[x]=true;
}
for(int i =0 ; i < m ; i ++ ){
if(!ban[u[i]] && !ban[v[i]]){
in[v[i]].push_back(u[i]);
deg[u[i]] ++ ;
}
}
for(int i = 0 ; i < n; i ++ ){
if(a[i] == bit) deg[i]=1;
}
int node;
while(!ads.empty()){
node = ads.front();
ads.pop();
for(auto x : in[node]){
if(inq[x]) continue;
deg[x]--;
if(deg[x] == 0){
ads.push(x);
init.push_back(x);
inq[x]=true;
}
}
}
return init;
}
vector<int> sol;
int has[N];
vector<int> who_wins(vector<int> _a, vector<int> _r, vector<int> _u, vector<int> _v) {
a = _a;
r = _r;
u = _u;
v = _v;
n = _a.size();
m = u.size();
bool ok;
sol.resize(n);
int rem = 0;
while(1){
ok = false;
vector<int> start;
rem = 0;
for(int i = 0 ; i < n; i ++ ){
if(r[i] && !ban[i]) start.push_back(i);
if(!ban[i]){
rem ++ ;
}
has[i]=false;
}
if(start.empty()){
for(int i = 0 ; i < n; i ++ ){
if(!ban[i]){
ban[i]=true;
sol[i]=0;
}
}
break;
}
start = f(1, start);
for(auto x : start) has[x]=true;
if(start.size() == rem){
for(int i = 0 ; i < n; i ++ ){
if(!ban[i]){
sol[i]=1;
ban[i]=true;
}
}
break;
}
vector<int> nw;
for(int i = 0 ; i < n; i ++ ){
if(!ban[i] && !has[i]){
nw.push_back(i);
}
}
nw = f(0, nw);
for(auto x : nw){
sol[x]=0;
ban[x]=true;
}
}
return sol;
}
Compilation message (stderr)
# | 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... |