Submission #126751

#TimeUsernameProblemLanguageResultExecution timeMemory
126751nekiToy Train (IOI17_train)C++14
5 / 100
2051 ms1668 KiB
#include "train.h"
#include <bits/stdc++.h>
#define maxn 5010

#define loop(i, a, b) for(int i=a;i<b;i++)
#define cc(a) cout<< a << endl;
using namespace std;


vector<int> edges[maxn];
vector<int> owner;vector<int> power;
int low[maxn];
int bval[maxn];
int cnt=0;

bool dfs(int u){
    low[u]=cnt; if(power[u]) cnt++;
    bval[u]=0;
    bool ans=(!(owner[u]));
    for(auto&& e:edges[u]){
        bool cmp;
        if(bval[e]==-1) dfs(e);
        if(low[e]!=-1 and( low[e]!=low[u] or power[u])) cmp=1;
        else{ cmp=bval[e];}
        
        if(owner[u]) ans=ans or cmp;
        else ans=ans and cmp;
    }
    bval[u]=ans;
    low[u]=-1;
    return ans;
}

std::vector<int> who_wins(std::vector<int> a, std::vector<int> r, std::vector<int> u, std::vector<int> v) {
	int n=a.size();
	std::vector<int> res(n);
	loop(i, 0, u.size()) edges[u[i]].push_back(v[i]);
	owner=a;power=r;
	loop(i, 0, n){
	    loop(j, 0, n) {low[j]=-1;bval[j]=-1;}
	    res[i]=dfs(i);
	}
	
	return res;
}

Compilation message (stderr)

train.cpp: In function 'std::vector<int> who_wins(std::vector<int>, std::vector<int>, std::vector<int>, std::vector<int>)':
train.cpp:5:36: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
 #define loop(i, a, b) for(int i=a;i<b;i++)
train.cpp:37:7:
  loop(i, 0, u.size()) edges[u[i]].push_back(v[i]);
       ~~~~~~~~~~~~~~                
train.cpp:37:2: note: in expansion of macro 'loop'
  loop(i, 0, u.size()) edges[u[i]].push_back(v[i]);
  ^~~~
#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...