讨论 / 求解大神 为什么会106???
静音上网关机 2012-07-31 20:51:00
点我顶贴 收藏 删除
我把n*2 ,然后 n+1到2*n为 敌人的集合。

program ll;

var

n,m,k,i,j:longint;

fat,g:Array[0..40000] of longint;

x,y,x0,y0,num:longint;

function f(x:longint):longint;

begin

if fat[x]=x then exit(x)

else fat[x]:=f(fat[x]);

exit(fat[x]);

end;

procedure union(x,y:longint);

begin

if f(x)<>f(y) then fat[f(x)]:=f(y);

end;

begin

readln(n,m);

n:=n+n;

for i:=1 to n do fat[i]:=i;

for i:=1 to m do

begin

readln(k,x,y);

x0:=x+n;y0:=y+n;

if k=0 then union(x,y);

if k<>0 then

begin

union(x0,y);

union(y0,x);

end;

end;

for i:=1 to n do inc(g[fat[i]]);

for i:=1 to n div 2 do

if g[i]<>0 then inc(num);

writeln(num);

end.

查看更多回复
提交回复