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"));
}