ttdd8 2008-10-17 20:57:00
点我顶贴
收藏
删除
把所有有关系的人都连到一个节点上,然后找人数最多的一堆,为什么得20呢?
program ttdd8;
var person:array[1..1000] of record
root,num:integer;
end;
a,b,i,j,n,m,max:integer;
begin
readln(n,m);
for i:=1 to n do
begin
person[i].root:=i;
person[i].num:=1;
end;
for i:=1 to m do
begin
readln(a,b);
person[person[a].root].num:=person[person[a].root].num+person[person[b].root].num;
for j:=1 to n do
if person[j].root=person[b].root then
person[j].root:=person[a].root;
for j:=1 to n do
if person[j].root=person[a].root then
person[j].num:=person[person[a].root].num;
end;
max:=-1;
for i:=1 to n do
if person[i].num>max then max:=person[i].num;
writeln(max);
end.