제출 #127652

#제출 시각아이디문제언어결과실행 시간메모리
127652Shush늑대인간 (IOI18_werewolf)C++17
0 / 100
4027 ms30008 KiB
#include <bits/stdc++.h>
#include "werewolf.h"
using namespace std;

int n, m, q, c = 0;
vector<int> s, e, l, r, v, a;
vector<vector<int>>adj;

bool dfs(int u, int w = 0){
	if(u == e[c] && w) return true;
	bool ans = false;
	v[u] = 1;
	for(int t : adj[u]){

		if(!v[t]){
			if(l[c] > t && !w) continue;
			if(r[c] < t && w) continue;
			if(l[c] <= t && r[c] >= t){
				ans = ans || dfs(t, 1);
			}
			ans = ans || dfs(t, w);
		}
	}
	return ans;
}

vector<int> check_validity(int N, std::vector<int> X, std::vector<int> Y, std::vector<int> S, std::vector<int> E, std::vector<int> L, std::vector<int> R) {
	n = N, m = X.size(), q =  S.size();
	adj = vector<vector<int>> (n);
	for(int i = 0; i < m; i++){
		adj[X[i]].push_back(Y[i]);
		adj[Y[i]].push_back(X[i]);
	}
	s = S, e = E, l = L, r = R;
	a = vector<int> (q);
	for(int i = 0; i < q; i++, c++){
		v = vector<int>(n, 0);
		if(s[i] >= l[i] && s[i] <= r[i])
		a[i] = dfs(s[i]) || dfs(s[i], 1);
		else
		a[i] = dfs(s[i]);
	}
	return a;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...