Submission #646259

#TimeUsernameProblemLanguageResultExecution timeMemory
646259jamezzzToy Train (IOI17_train)C++17
11 / 100
566 ms1272 KiB
#include "train.h"
#include <bits/stdc++.h>
using namespace std;

#define maxn 5005

typedef vector<int> vi;
bool vis[maxn],good[maxn];
vi AL[maxn];

vi who_wins(vi a,vi r,vi u,vi v){
	int n=a.size(),m=u.size();
	vi ans(n,0);
	for(int i=0;i<m;++i){
		AL[u[i]].push_back(v[i]);
	}
	for(int i=0;i<n;++i){
		if(r[i]==1)continue;
		for(int j=0;j<n;++j)vis[j]=false;
		queue<int> q;
		q.push(i);
		while(!q.empty()){
			int u=q.front();
			q.pop();
			if(good[i])continue;
			for(int v:AL[u]){
				if(r[v]==1)continue;
				if(v==i)good[i]=true;
				if(vis[v])continue;
				vis[v]=true;
				q.push(v);
			}
		}
	}
	for(int i=0;i<n;++i){
		bool take=false;
		for(int j=0;j<n;++j){
			for(int k:AL[j]){
				if(good[k]){
					good[j]=true;
					take=true;
					break;
				}
			}
		}
		if(!take)break;
	}
	for(int i=0;i<n;++i)ans[i]=!good[i];
	return ans;
}
#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...