Cod sursa(job #2486000)

Utilizator AndreiCroitoruAndrei Croitoru AndreiCroitoru Data 2 noiembrie 2019 11:09:48
Problema Oz Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <fstream>
#define int long long
using namespace std;
ifstream in("oz.in");
ofstream out("oz.out");
int cmmdc(int a,int b) {
    int r,cb=b,ca=a;
    while(b) {
        r=a%b;
        a=b;
        b=r;
    }
    return a;
}
int cmmmc(int a,int b) {
    int r,cb=b,ca=a;
    while(b) {
        r=a%b;
        a=b;
        b=r;
    }
    return 1LL*ca*cb/a;
}
struct nugarel {
    int nu,ga,rel;
};
nugarel w[100001];
int v[10001];
int32_t main() {
    int n,m,i,a,b,d;
    in>>n>>m;
    for(i=1; i<=n; i++)
        v[i]=1;
    for(i=1; i<=m; i++) {
        in>>a>>b>>d;
        v[a]=v[a]*d/cmmdc(v[a],d);
        v[b]=v[b]*d/cmmdc(v[b],d);
        w[i].nu=a;
        w[i].ga=b;
        w[i].rel=d;

    }
    for(int a=1; a<=n; a++) {
        if(v[a]>2e9||v[a]<0) {
            out<<-1;
            return 0;
        }
    }
    for(i=1; i<=m; i++) {
        if(cmmdc(v[w[i].nu],v[w[i].ga])!=w[i].rel) {
            out<<-1;
            return 0;
        }
    }
    for(i=1; i<=n; i++) {
        out<<v[i]<<' ';
    }
    return 0;
}