Cod sursa(job #3120693)

Utilizator Traian_7109Traian Mihai Danciu Traian_7109 Data 8 aprilie 2023 08:47:50
Problema Oz Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <fstream>

using namespace std;

ifstream fin("oz.in");
ofstream fout("oz.out");

typedef long long LL;
LL v[10005];
const LL LIM = 2000000000;

struct divz {
    short poz1, poz2;
    LL cmmdivc;
}
w[100005];

LL cmmdc(LL a, LL b)
{
    while (b) {
        LL r = a%b;
        a = b;
        b = r;
    }
    
    return a;
}

LL cmmmc(LL a, LL b)
{
    return a/cmmdc(a, b)*b;
}

int main()
{
    short n, x, y;
    int m, d;
    fin>>n>>m;
    
    for (short i = 1; i <= n; i++) {
        v[i] = 1;
    }
    
    for (int i = 1; i <= m; i++) {
        fin>>x>>y>>d;
        w[i].poz1 = x;
        w[i].poz2 = y;
        w[i].cmmdivc = d;
        v[x] = cmmmc(v[x], d);
        v[y] = cmmmc(v[y], d);
    }
    
    for (int i = 1; i <= m; i++) {
        if (cmmdc(v[w[i].poz1], v[w[i].poz2]) != w[i].cmmdivc) {
            fout<<-1;
            return 0;
        }
    }
    
    for (short i = 1; i <= n; i++) {
        if (v[i] > LIM) {
            fout<<-1;
            return 0;
        }
    }
    
    for (short i = 1; i <= n; i++) {
        fout<<v[i]<<' ';
    }
    
    return 0;
}