Cod sursa(job #164242)

Utilizator constantin02constantin constantin02 Data 23 martie 2008 19:51:19
Problema Oz Scor 10
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.32 kb
var fi,fo:text;
    n,m,i,j,d,l,k,aux,ll:longint;
    v:array[1..10000]of longint;
function ggt(a,b:longint):longint;
begin
  if b=0 then ggt:=a
         else ggt:=ggt(b,a mod b);
end;
begin
  assign(fi,'oz.in'); reset(fi);
  assign(fo,'oz.out'); rewrite(fo);
  read(fi,n,m);
  for ll:=1 to m do
    begin
      read(fi,i,j,d);
      if (v[i]=0)and(v[j]=0) then
        begin
          v[i]:=d;
          v[j]:=d;
        end
      else
        if (v[i]=0) then
          begin
            v[i]:=d;
            aux:=ggt(d,v[j]);
            v[j]:=v[j]*d div aux;
          end
        else
          if (v[j]=0) then
            begin
              v[j]:=d;
              aux:=ggt(d,v[i]);
              v[i]:=v[i]*d div aux;
            end
          else
            begin
              aux:=ggt(v[i],v[j]);
              if aux>d then
                begin
                  writeln(fo,-1);
                  close(fo);
                  halt;
                end
              else
                if aux<d then
                  if d mod aux=0 then
                    begin
                      v[i]:=v[i]*d div aux;
                      v[j]:=v[j]*d div aux;
                    end;
            end;
    end;
  for i:=1 to n do
    write(fo,v[i],' ');
  close(fi);
  close(fo);
end.