Submission #1367756

#TimeUsernameProblemLanguageResultExecution timeMemory
1367756DangerNoodle7591Werewolf (IOI18_werewolf)C++20
15 / 100
252 ms9728 KiB
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define NN 3005


vector<int> adj[NN];
int gez[NN][2];
void dfs(int x,int kim,int &l,int &r){
	if(gez[x][kim])return;
	if(kim==0&&x<l)return;
	if(kim==1&&x>r)return;
	gez[x][kim]=1;
	for(auto u:adj[x]){
		if(gez[u][kim])continue;
		dfs(u,kim,l,r);
	}
	if(l<=x&&x<=r&&kim!=1){
		gez[x][1]=1;
		
		for(auto u:adj[x]){
			if(gez[u][1])continue;
			dfs(u,1,l,r);
		}
	}

}

vector<int> check_validity(int N, vector<int> X, vector<int> Y, vector<int> S, vector<int> E,vector<int> L, vector<int> R) {

	for(int i=0;i<=N;i++)adj[i].clear();
  	for(int i=0;i<X.size();i++){
		adj[X[i]].pb(Y[i]);
		adj[Y[i]].pb(X[i]);
  	}
  	vector<int> ans;

  	for(int test=0;test<S.size();test++){
		int s=S[test],hed=E[test],l=L[test],r=R[test];
		if(s<l){
			ans.pb(0);continue;
		}
		for(int i=0;i<=N;i++){gez[i][0]=gez[i][1]=0;}
		dfs(s,0,l,r);
		ans.pb(gez[hed][1]);
	
  	}

  return ans;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...