Cod sursa(job #187741)

Utilizator tamas_iuliaTamas Iulia tamas_iulia Data 5 mai 2008 12:25:08
Problema Oz Scor 55
Compilator fpc Status done
Runda Arhiva de probleme Marime 1 kb
const inf=2000000001;
var i,j,d : array[0..100010] of longint;
    v : array[0..10010] of longint;
    f,g : text;
    ii,n,m,k,cmmdc : longint;
    p : int64;
function euclid(a,b : longint):longint;
var c : longint;
begin
  while b<>0 do
  begin
    c:=a mod b;
    a:=b;
    b:=c;
  end;
  euclid:=a;
end;

procedure nu;
      begin
        writeln(g,'-1');close(g);
        halt;
      end;


begin
  assign(f,'oz.in');reset(f);
  assign(g,'oz.out');rewrite(g);
  read(f,n,m);
  for ii:=1 to m do
    read(f,i[ii],j[ii],d[ii]);
  for ii:=1 to n do v[ii]:=1;
  for k:=1 to m do
  begin
    p:=v[i[k]]*d[k];
    cmmdc:=euclid(v[i[k]],d[k]);
      if p div cmmdc<inf then v[i[k]]:=p div cmmdc
      else nu;
    p:=v[j[k]]*d[k];
    cmmdc:=euclid(v[j[k]],d[k]);
      if p div cmmdc<inf then v[j[k]]:=p div cmmdc
      else nu;
  end;
  for k:=1 to m do
    if d[k]<>euclid(v[i[k]],v[j[k]]) then nu;
  for ii:=1 to n do write(g,v[ii],' ');
  writeln(g);
  close(g);
end.