Submission #586227

#TimeUsernameProblemLanguageResultExecution timeMemory
586227jamezzzGame (APIO22_game)C++17
30 / 100
4059 ms17708 KiB
#include "game.h"
#include <bits/stdc++.h>
using namespace std;

#define pb push_back
#define maxn 300005

int n,k;
bool vis[maxn];
vector<int> AL[maxn],AL2[maxn];

int dfs(int u){
	vis[u]=true;
	int ans=min(u,k);
	for(int v:AL[u]){
		if(!vis[v]){
			ans=min(ans,dfs(v));
		}
	}
	return ans;
}

int dfs2(int u){
	vis[u]=true;
	int ans=-1;
	if(u<k)ans=u;
	for(int v:AL2[u]){
		if(!vis[v]){
			ans=max(ans,dfs2(v));
		}
	}
	return ans;
}

void init(int _n,int _k){
	n=_n;k=_k;
}

int add_teleporter(int u,int v){
	AL[u].pb(v);
	AL2[v].pb(u);
	
	for(int i=0;i<n;++i)vis[i]=false;
	int low=dfs(v);
	for(int i=0;i<n;++i)vis[i]=false;
	int high=dfs2(u);
	if(low<=high)return 1;
	return 0;
}
#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...