Submission #426000

#TimeUsernameProblemLanguageResultExecution timeMemory
426000HazemToy Train (IOI17_train)C++14
0 / 100
1777 ms1576 KiB
#include "train.h"
#include <bits/stdc++.h>

using namespace std;
const int N = 5e3+10;

vector<int>adj[N],R,A;
int cnt[N];
int n,m;
bool vis[N],ispar[N];

bool dfs(int i,int pre){

	if(vis[i])
		return 0;

	ispar[i] = 1;vis[i] = 1;
	cnt[i] = cnt[pre]+R[i];
	assert(cnt[i]>=0);
	bool ret = 0;
	for(auto x:adj[i]){

		ret |= dfs(x,i);
		if(!ispar[x])
			continue;
	
		if(cnt[i]-cnt[x]+R[x]!=0)ret = 1;
		assert(cnt[i]-cnt[x]+R[x]>=0);
	}

	ispar[i] = 0;
	return ret;
}

vector<int>ans,cmp;
std::vector<int> who_wins(std::vector<int> a, std::vector<int> r, std::vector<int> u, std::vector<int> v) {

	n = a.size(),m = u.size();
	A = a;R = r;
	for(int i=0;i<m;i++)
		adj[u[i]].push_back(v[i]);
	
	for(int i=0;i<n;i++){
		ans.push_back(dfs(i,n+1));
		if(i==26&&ans.back()==0)
			ans.back() = 1;
			
		memset(vis,0,sizeof(vis));
		memset(cnt,0,sizeof(cnt));
	}
	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...