C11BC2 - Robin

Tác giả: flashmt

Ngôn ngữ: C++

#include <iostream>
#include <cstdio>
using namespace std;

int d[10010];

int get(int x)
{
	if (d[x]-x) d[x]=get(d[x]);
	return d[x];
}

int main()
{
	int n,q,x,y,c;
	cin >> n >> q;
	for (int i=1;i<=n;i++) d[i]=i;
	for (int i=2;i<=n;i++) 
	{
		y=i;
		scanf("%d%d",&x,&c);
		if (c==1)
		{
			x=get(x); y=get(y);
			if (x-y) d[y]=x;
		}
	}
	while (q--) scanf("%d%d",&x,&y), puts((get(x)==get(y)?"NO":"YES"));
}
		

Download