静音上网关机 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.