const ww='relation.';
maxn=20000;//直接赋值会T
var i,m,q:longint;
n,x,y,r1,r2:integer;
a:array[0..maxn+1] of integer;
function findroot(x:integer):integer;
var path:array[1..maxn] of longint;
k,root,i:longint;//不要有多余变量名
begin
k:=0;
root:=x;
while a[root]<>root do
begin
inc(k);
path[k]:=root;
root:=a[root];
end;
findroot:=root;
for i:=1 to k-1 do a[path[i]]:=root;
end;
procedure union(r1,r2:integer);
begin
a[r2]:=r1;
end;
procedure init;//不要放太多输入在里面,会T。
begin
assign(input,ww+'in'); reset(input);
assign(output,ww+'out'); rewrite(output);
end;
procedure clo;
begin
close(input);
close(output);
end;
begin
init;
readln(n,m);
for i:=1 to n do a[i]:=i;
for i:=1 to m do
begin
readln(x,y);
r1:=findroot(x);
r2:=findroot(y);
if r1<>r2 then union(r1,r2);
end;
readln(q);
for i:=1 to q do
begin
readln(x,y);
if findroot(x)=findroot(y) then writeln('Yes')
else writeln('No');
end;
clo;
end.
并查集基础题:relation
最新推荐文章于 2023-02-22 14:58:59 发布