Cod sursa(job #11452)

Utilizator gurneySachelarie Bogdan gurney Data 31 ianuarie 2007 18:33:42
Problema Triplete Scor 40
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.05 kb
program triplete;
  const
    fin='triplete.in';
    fout='triplete.out';
    nmax=4096;
  type
    muchie=record
      x,y:integer;
      end;
  var
    m:array[1..65536] of muchie;
    adj:array[1..nmax,0..512] of byte;
    nm,n,i,j,k,x,y:longint;
    num_tr:longint;

procedure adauga(x,y:longint);
  begin
    adj[x,y shr 3]:=adj[x,y shr 3] or (1 shl (y and 7));
  end;

function num_ones(x:integer):byte;
  var
    num:integer;
  begin
    num:=0;
    while x<>0 do
      begin
        inc(num);
        x:=x and (x-1);
      end;
    num_ones:=num;
  end;

begin
  assign(input,fin);
    reset(input);
    readln(n,nm);
    for i:=1 to nm do
      begin
        readln(x,y);
        m[i].x:=x;m[i].y:=y;
        adauga(x,y);
        adauga(y,x);
      end;
  close(input);
  assign(output,fout);
    rewrite(output);
    num_tr:=0;
    for i:=1 to nm do
      begin
        for j:=0 to 512 do
          inc(num_tr,num_ones(adj[m[i].x,j] and adj[m[i].y,j]))
      end;
    writeln(num_tr div 3);
  close(output);
end.