C11BC2 - Robin
Tác giả: ladpro98
Ngôn ngữ: Pascal
program c11bc2;
uses math;
const maxn=22222;
fi='';
var inp:text;
a,adj,link,head:array[1..maxn] of longint;
check:array[1..maxn] of boolean;
n,m,c,i,x,y,p,k:longint;
procedure dfs(i:longint);
var j:longint;
begin
check[i]:=true;
a[i]:=c;
j:=head[i];
while j>0 do
begin
if not check[adj[j]] then
dfs(adj[j]);
j:=link[j];
end;
end;
begin
assign(inp,fi);reset(inp);
readln(inp,n,k);
for i:=2 to n do
begin
readln(inp,x,p);
if p=1 then
begin
inc(m);
adj[m]:=x;
link[m]:=head[i];
head[i]:=m;
inc(m);
adj[m]:=i;
link[m]:=head[x];
head[x]:=m;
end;
end;
for i:=1 to n do
if not check[i] then
begin
inc(c);
dfs(i);
end;
for i:=1 to k do
begin
readln(inp,x,y);
if a[x]=a[y] then writeln('NO')
else writeln('YES');
end;
end.