Cod sursa(job #166603)

Utilizator valytgjiu91stancu vlad valytgjiu91 Data 28 martie 2008 09:57:24
Problema Oz Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.54 kb
var f,g:text;
v:array[1..10000]of int64;
a:array[1..100000]of record
                       i,j:longint;
                       d:int64;
                       end;
n:longint;
q:boolean;
d,x:int64;
l,i,j,m:longint;
function cmmdc(x,y:int64):int64;
var r:int64;
begin
{r:=x mod y;
while r<>0 do begin
              x:=y;
              y:=r;
              r:=x mod y;
              end;
if y=1 then cmmdc:=1
       else cmmdc:=y; }
repeat
 r:=x mod y;
 x:=y;
 y:=r;
until r=0;
cmmdc:=y;
end;
begin
assign(f,'oz.in');
reset(f);
readln(f,n,m);
assign(g,'oz.out');
rewrite(g);
for i:=1 to n do
  v[i]:=1;
for l:=1 to m do
  begin
    readln(f,i,j,d);
    a[l].i:=i;
    a[l].j:=j;
    a[l].d:=d;
    x:=v[i]*d;
    v[i]:=x div cmmdc(v[i],d);
    if v[i]>2000000000   then
                      begin
                                              writeln(g,'-1');
                                              close(g);
                                              halt;
                                              end;
    v[j]:=(v[j]*d) div cmmdc(v[i],d);
    if v[j]>2000000000  then  begin
                                              writeln(g,'-1');
                                              close(g);
                                              halt;
                                              end ;
  end;
q:=true;
for i:=1 to m do
if cmmdc(v[a[i].i],v[a[i].j])<>a[i].d then begin q:=false; break;end;
if q then
begin
for i:=1 to n do
 write(g,v[i],' ');
end
else writeln(g,'-1');
close(g);
end.