poj 3275 pascal(パール補強版)
2884 ワード
テーマ:
n頭牛がいることが知られており、m個の産乳量の関係を知っていて、少なくとも何回比較して、小さい頃から大きくソートすることができますか.
テーマ・分析:
実はこの問題は金典の真珠で、要求の複雑な点にすぎず、あまり変動しなくてもいい.タイムアウトした場合は隣接表でできます.
スレッド:
n頭牛がいることが知られており、m個の産乳量の関係を知っていて、少なくとも何回比較して、小さい頃から大きくソートすることができますか.
テーマ・分析:
実はこの問題は金典の真珠で、要求の複雑な点にすぎず、あまり変動しなくてもいい.タイムアウトした場合は隣接表でできます.
スレッド:
const
maxv=10001;
maxe=2000;
var
d,c:array[1..maxe,0..maxv] of longint;
f:array[0..maxe,0..maxe] of boolean;
i,j,k,x,y:longint;
n,m:longint;
ans:longint;
begin
read(n,m);
for i:=1 to m do
begin
readln(x,y);
f[x,y]:=true;
inc(d[x,0]);//
d[x,d[x,0]]:=y; //d[x] x ,d[x,0]
inc(c[y,0]); //
c[y,c[y,0]]:=x; //c[y] x ,d[x,0]
end;
for k:=1 to n do
for i:=1 to c[k,0] do
begin
x:=c[k,i];
for j:=1 to d[k,0] do
begin
y:=d[k,j];
if not f[x,y]
then
begin
d[x,0]:=d[x,0]+1; { }
d[x,d[x,0]]:=y;
c[y,0]:=c[y,0]+1;
c[y,c[y,0]]:=x;
f[x,y]:=true;
ans:=ans+1; { , ans+1,ans m}
end;
end;
end;
write(n*(n-1) div 2-ans-m);
end.