poj 3275 pascal(パール補強版)

2884 ワード

テーマ:
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