Cod sursa(job #164279)

Utilizator constantin02constantin constantin02 Data 23 martie 2008 20:38:26
Problema Oz Scor 35
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.24 kb
type pelem=^elem;
     elem=record
       ii,ij,divi:longint;
       next:pelem;
     end;

var fi,fo:text;
    n,m,i,j,d,k,l,aux:longint;
    v:array[1..10000]of int64;
    p,f:pelem;
function ggt(a,b:longint):longint;
begin
  if b=0 then ggt:=a
         else ggt:=ggt(b,a mod b);
end;
procedure verif(f:pelem);
begin
  if ggt(v[f^.ii],v[f^.ij])<>f^.divi then
    begin
      writeln(fo,-1);
      close(fo);
      halt;
    end;
end;
begin
  assign(fi,'oz.in'); reset(fi);
  assign(fo,'oz.out'); rewrite(fo);
  read(fi,n,m);
  for k:=1 to m do
    begin
      read(fi,i,j,d);
      new(p);
      p^.ii:=i;
      p^.ij:=j;
      p^.divi:=d;
      p^.next:=f;
      f:=p;
      if v[i]=0 then v[i]:=d
       else v[i]:=v[i]*d div ggt(d,v[i]);
      if v[i]>2000000000 then
        begin
          writeln(fo,-1);
          close(fo);
          halt;
        end;
      if v[j]=0 then v[j]:=d
       else v[j]:=v[j]*d div ggt(d,v[j]);
      if v[j]>2000000000 then
        begin
          writeln(fo,-1);
          close(fo);
          halt;
        end;
    end;
  while f<>nil do
    begin
      verif(f);
      f:=f^.next;
    end;
  for i:=1 to n do
    write(fo,v[i],' ');
  close(fi);
  close(fo);
end.