Cod sursa(job #312574)

Utilizator m123pop manu m123 Data 6 mai 2009 14:36:28
Problema Oz Scor 55
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.2 kb
program oz;
var f,g:text;
   v:array[1..10000] of longint;
  n,m,k,a,b,d,i,j,cmmdc,ok:longint;
label 1;
procedure euclid(a,b:longint; var cmmdc:longint);
   var r,aux:longint;
   begin
  if a<b then begin aux:=a;a:=b;b:=aux;end;
   r:=a mod b;
   while r<>0 do
    begin a:=b;b:=r; r:=a mod b; end;
  cmmdc:=b;
  end;
begin
assign(f,'oz.in');reset(f);
assign(g,'oz.out');rewrite(g);
readln(f,n,m);
for i:=1 to n do v[i]:=1;
for k:=1 to m do
  begin
  readln(f,i,j,d);
  if (v[i]<>1) and(d>1000000000) and (d mod v[i]<>0 )
      then   begin writeln(g,-1);goto 1;end
      else
       begin
  euclid(v[i],d,cmmdc);
  v[i]:=v[i]*d div cmmdc;
     end;
  if (v[j]<>1) and(d>1000000000) and (d mod v[j]<>0 )
      then   begin writeln(g,-1);goto 1;end
      else
       begin
  euclid(v[j],d,cmmdc);
  v[j]:=v[j]*d div cmmdc;
  end;
  if (v[i]>2000000000) or (v[j]>2000000000) then begin writeln(g,-1);goto 1;end;
  end;
close(f);
reset(f);
readln(f,n,m);
ok:=0;
for k:=1 to m do
 begin
 readln(f,i,j,d);
 euclid(v[i],v[j],cmmdc);
 if cmmdc<>d then begin ok:=1; break;end;
 end;
if ok=0 then for i:=1 to n do write(g,v[i],' ')
         else write(g,-1);
1:close (f);close(g);
end.