Cod sursa(job #28281)

Utilizator izso88istvan zsolt izso88 Data 7 martie 2007 17:51:17
Problema Triplete Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.4 kb
const fff=4096;
      ffk=fff div 31;
      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..31] of longint;
    list:array[1..mmm,1..2] of integer;

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

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

begin
     kh[0]:=1;
     for i:=1 to 30 do
         kh[i]:=kh[i-1]*2;
     assign(t,'triplete.in');
     reset(T);
      read(t,n,m);
      ne:=(n div 31)-1;
      if n mod 31>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[0,l] xor (ad[j,l] and ad[k,l]);


                      end;

     assign(t,'triplete.out');
     rewrite(t);
          for l:=0 to ne do
                       for u:=0 to 31 do
                       hany:=hany+(ad[0,l] shr u) mod 2;

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

end.