Cod sursa(job #28303)

Utilizator izso88istvan zsolt izso88 Data 7 martie 2007 18:17:48
Problema Triplete Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.55 kb
const fff=4096;
      ffk=fff div 16;
      mmm=70000;
var t:text;
    ad:array[0..fff,0..ffk] of longint;
    hany:longint;
    i,j,k,l,m,n,ne,u:longint;
    kh:array[0..16] of longint;
    list:array[1..mmm,1..2] of integer;
    szam:array[0..255] of byte;

procedure ert(x,ho,mi:integer);
          var se,os:integer;
          begin
          se:=ho div 16;
          os:=(ho mod 16);

          ad[x,se]:=ad[x,se]+kh[os];
          end;

begin
     kh[0]:=1;
     for i:=1 to 15 do
         kh[i]:=kh[i-1]*2;

     for i:=0 to 255 do begin

     k:=0;
     l:=i;
      for j:=0 to 15 do
       k:=k+((L shr j) mod 2);

      szam[i]:=k;

     end;

     assign(t,'triplete.in');
     reset(T);
      read(t,n,m);
      ne:=(n div 16)-1;
      if n mod 16>0 then ne:=ne+1;

      for i:=1 to n do for j:=1 to ne do ad[i,j]:=0;

      for i:=1 to m do begin
                       read(t,j,k);
                       ert(j,k,1);
                       ert(k,j,1);
                       list[i,1]:=j;
                       list[i,2]:=k;
                       end;
     close(T);
      hany:=0;
     for i:=1 to m do begin
                      j:=list[i,1];
                      k:=list[i,2];
                      for l:=0 to ne do
                      ad[0,l]:=(ad[j,l] and ad[k,l]);

                      for l:=0 to ne do
                       hany:=hany+szam[ad[0,l]];

                      end;

     assign(t,'triplete.out');
     rewrite(t);




     writeln(t,hany div 3);
     close(T);

end.