Cod sursa(job #163773)

Utilizator ProtomanAndrei Purice Protoman Data 23 martie 2008 10:17:06
Problema Oz Scor 80
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.59 kb
var f1,f2:text;
    i,n,m,x,y:longint;
    d,lim:int64;
    ok:boolean;
    v:array[0..10010] of int64;

function cmmdc(a,b:int64):int64;
var c:longint;
begin
        while b>0 do
        begin
                c:=a mod b;
                a:=b;
                b:=c;
        end;
        cmmdc:=a;
end;


begin
        assign(f1,'oz.in');
        reset(f1);
        assign(f2,'oz.out');
        rewrite(f2);
        read(f1,n,m);
        ok:=true;
        lim:=2000000000;
        for i:=1 to n do
                v[i]:=1;
        for i:=1 to m do
        begin
                read(f1,x,y,d);
                v[x]:=v[x]*(d div cmmdc(v[x],d));
                v[y]:=v[y]*(d div cmmdc(v[y],d));
                if (v[x]>lim)or(v[y]>lim) then
                begin
                        ok:=false;
                        break;
                end;
        end;
        if ok=false then
        begin
                writeln(f2,-1);
                close(f1);
                close(f2);
                halt;
        end;
        close(f1);
        assign(f1,'oz.in');
        reset(f1);
        read(f1,n,m);
        for i:=1 to m do
        begin
                read(f1,x,y,d);
                if cmmdc(v[x],v[y])<>d then
                        ok:=false;
        end;
        if ok=false then
        begin
                writeln(f2,-1);
                close(f1);
                close(f2);
                halt;
        end;
        for i:=1 to n-1 do
                write(f2,v[i],' ');
        writeln(f2,v[n]);
        close(f1);
        close(f2);
end.