Cod sursa(job #165154)

Utilizator antoanelaAntoanela Siminiuc antoanela Data 25 martie 2008 16:22:30
Problema Oz Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.13 kb
program oz;
var f,g:text;
    v:array[0..10010]of int64;
    p1,p2,p3:array[0..100010]of longint;
    n,m,i,a,b,k,c3,ok:longint;
    h,s,cv,cx,x,c1,c2:int64;
begin
assign(f,'oz.in');
assign(g,'oz.out');
reset(f);
rewrite(g);
read(f,n,m);
for i:=1 to n do v[i]:=1;
for i:=1 to m do
  begin
    read(f,p1[i],p2[i],p3[i]);
    a:=p1[i];
    b:=p2[i];
    x:=p3[i];
    cx:=x;
    cv:=v[a];
    k:=v[a] mod x;
    while (k<>0)do
      begin
        v[a]:=x;
        x:=k;
        k:=v[a] mod x;
      end;
    h:=cx*cv;
    s:=h div x;
    v[a]:=s;
    x:=cx;
    cv:=v[b];
    k:=v[b] mod x;
    while (k<>0)do
      begin
        v[b]:=x;
        x:=k;
        k:=v[b] mod x;
      end;
    h:=cx*cv;
    s:=h div x;
    v[b]:=s;
  end;
for i:=1 to m do
  begin
    c1:=v[p1[i]];
    c2:=v[p2[i]];
    k:=c1 mod c2;
    while (k<>0)do
      begin
        c1:=c2;
        c2:=k;
        k:=c1 mod c2;
      end;
    if (c2<>p3[i])then
      begin
        ok:=1;
        break;
      end;
  end;
if (ok=1)then write(G,'-1')else
  for i:=1 to n do write(g,v[i],' ');
close(f);
close(g);
end.