题目背景 Background
若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,现在给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系。
标签:
Yes
Yes
No
代码:
var n,m,p,i,x,y:longint;
f:array[1..5000] of longint;
function find(x:longint):longint; //查找父亲并路径压缩
begin
if f[x]=x then exit(x)
else find:=find(f[x]);
end;
begin
readln(n,m,p);
for i:=1 to n do f[i]:=i; //每个元素属于自己集合
for i:=1 to m do
begin
readln(x,y); //读入一组数,并找他们的父亲
x:=find(x);
y:=find(y);
if x<>y then f[x]:=y; //如何父亲不同则合并
end;
for i:=1 to p do
begin
readln(x,y);
x:=find(x);
y:=find(y);
if x=y then writeln(‘Yes‘)
else writeln(‘No‘);
end;
end.
标签:
原文地址:http://www.cnblogs.com/zqzxwdm/p/4744853.html