您的位置:首页 > 其它

POJ 1611 The Suspects

2016-12-16 19:46 232 查看

题意:

给你1~n-1个数,然后给你m个组,求有多少个和零一组。(n<30000)(m<500);

思路:

把他们全都分到各自的集合,如果和0的集合相同就可以统计一下,用并查集就好了。

时间复杂度: O(n*m);

const
maxn=30000;
var
a,f:array [0..maxn] of longint;
o,k,i,j,n,m,ans:longint;

function father(x:longint):longint;
begin
if f[x]=x then father:=x
else father:=father(f[x]);
f[x]:=father;
end;

begin
readln(n,m);
while (n<>0) or (m<>0)  do
begin
ans:=0;
for i:=0 to n do
f[i]:=i;
for j:=1 to m do
begin
read(o);
read(a[0]);
for i:=1 to o-1 do
begin
read(a[i]);

f[father(a[i-1])]:=father(a[i]);
end;
readln;
end;
for i:=0 to n do
if father(f[i])=father(f[0]) then inc(ans);
writeln(ans);
readln(n,m);
end;
end.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  何嘉阳