Tyvj 1017 冗余关系

题目:

 冗余关系

来源:

 Tyvj 1017

题目大意:

 N对关系,M个人,假定X认识Y ,Y也认识X,假如A认识B,B认识C,则A也认识C,求  出多余的关系数。

数据范围:

 1<=n,m<=1000

样例:

 3 3

 1 2

 1 3

 2 3

1

做题思路:

 并查集懂否,用并查集判断每对关系是否存在,存在则inc(ans),否则练立关系

知识点:

 并查集

var
 f:array[0..1010]of longint;
 x,y,n,m,ans,i:longint;
function getf(x:longint):longint;{<通俗点,找爹>}
begin
 iff[x]=x then exit(x)
 else getf:=getf(f[x]);
end;
procedure union(x,y:longint); {<合并集合>}
begin
 f[getf(x)]:=getf(y);
end;
begin
 readln(n,m);
 ans:=0;
 fori:=1 to m do f[i]:=i;
 fori:=1 to n do
 begin
  readln(x,y);
   ifgetf(x)=getf(y) then inc(ans)
   else union(x,y);
 end;
 writeln(ans);
end.
题目来源: http://www.tyvj.cn:8080/Problem_Show.asp?id=1017

你可能感兴趣的:(Tyvj,并查集)