답안 #816361

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
816361 2023-08-09T04:54:18 Z ttamx 늑대인간 (IOI18_werewolf) C++14
0 / 100
311 ms 45900 KB
#include "werewolf.h"
#include<bits/stdc++.h>

using namespace std;

typedef pair<int,int> p2;

const int N=2e5+5;

int n,m,q;
vector<int> adj[N];
bool vis[N];
int pos[N];
int s[N],e[N],l[N],r[N];
vector<int> ql[N],qr[N];
p2 ranl[N],ranr[N];

struct dsu_t{
	int p[N],l[N],r[N];
	void init(){
		for(int i=0;i<n;i++){
			p[i]=l[i]=r[i];
		}
	}
	int fp(int u){
		if(u==p[u])return u;
		return p[u]=fp(p[u]);
	}
	void uni(int u,int v){
		u=fp(u),v=fp(v);
		if(u==v)return;
		p[v]=u;
		l[u]=min(l[u],l[v]);
		r[u]=max(r[u],r[v]);
	}
}dsu;

vector<int> check_validity(int _n,vector<int> X,vector<int> Y,vector<int> S,vector<int> E,vector<int> L,vector<int> R) {
	n=_n;
	m=X.size();
	q=S.size();
	for(int i=0;i<m;i++){
		int u=X[i],v=Y[i];
		adj[u].emplace_back(v);
		adj[v].emplace_back(u);
	}
	for(int i=0;i<q;i++){
		s[i]=S[i];
		e[i]=E[i];
		l[i]=L[i];
		r[i]=R[i];
		ql[l[i]].emplace_back(i);
		qr[r[i]].emplace_back(i);
	}
	int nxt=0;
	for(int i=0;i<n;i++)if(adj[i].size()==1)nxt=i;
	for(int i=0;i<n;i++){
		pos[nxt]=i;
		vis[nxt]=true;
		for(auto v:adj[nxt])if(!vis[v])nxt=v;
	}
	dsu.init();
	for(int u=n-1;u>=0;u--){
		for(auto v:adj[u]){
			if(v<u)continue;
			dsu.uni(pos[u],pos[v]);
		}
		for(auto i:ql[u]){
			int p=dsu.fp(pos[s[i]]);
			ranl[i]=p2(dsu.l[p],dsu.r[p]);
		}
	}
	dsu.init();
	for(int u=0;u<n;u++){
		for(auto v:adj[u]){
			if(v>u)continue;
			dsu.uni(pos[u],pos[v]);
		}
		for(auto i:qr[u]){
			int p=dsu.fp(pos[e[i]]);
			ranr[i]=p2(dsu.l[p],dsu.r[p]);
		}
	}
	vector<int> ans(q);
	for(int i=0;i<q;i++){
		int lb=max(ranl[i].first,ranr[i].first);
		int ub=min(ranl[i].second,ranr[i].second);
		ans[i]=lb<=ub;
	}
	return ans;
}
# 결과 실행 시간 메모리 Grader output
1 Incorrect 7 ms 14384 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 7 ms 14384 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 311 ms 45900 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 7 ms 14384 KB Output isn't correct
2 Halted 0 ms 0 KB -