讨论 / 亲戚 并查集pascal代码
baolong007 2012-03-05 21:22:00
点我顶贴 收藏 删除
program tyvj1441;

var

n,m,p:longint;

f:array[0..5100]of longint;

procedure init;

begin

assign(input,'tyvj1441.in');

assign(output,'tyvj1441.out');

reset(input);

rewrite(output);

end;

procedure terminate;

begin

close(input);

close(output);

halt;

end;

function find(x:longint):longint;

begin

if f[x]=x then exit(x);

f[x]:=find(f[x]);

exit(f[x]);

end;

procedure merge(a,b:longint);

var

ra,rb:longint;

begin

ra:=find(a);

rb:=find(b);

f[ra]:=rb;

end;

procedure work;

var

i,a,b:longint;

begin

readln(n,m,p);

for i:=1 to n do

begin

f[i]:=i;

end; //方便后面判断是否有亲戚关系

for i:=1 to m do

begin

readln(a,b);

merge(a,b); //由于题中没有说那个数是哪个数的

end; //亲戚所以要将他们合并在树中

for i:=1 to p-1 do

begin

readln(a,b);

if find(a)=find(b) then writeln('Yes')

else writeln('No');

end;

readln(a,b);

if find(a)=find(b) then write('Yes')

else write('No');

end;

begin

init;

work;

terminate;

end.

#1 Mrzhao@2012-03-05 21:22:00
回复 删除
?

查看更多回复
提交回复