Cod sursa(job #2717371)

Utilizator PletoPletosu Cosmin-Andrei Pleto Data 7 martie 2021 12:14:41
Problema Oz Scor 55
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <bits/stdc++.h>

using namespace std;

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

int cmmdc(int a, int b) {
    while (b > 0) {
        int r = a % b;
        a = b;
        b = r;
    }
    return a;
}

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

struct node {
    int a, b, d;
};

int main() {
    ifstream::sync_with_stdio(0);
    fin.tie(0);

    int n, m;
    fin >> n >> m;

    vector <int> S(n + 1, 1);
    vector <node> nodes;

    for (int a, b, d, i = 0; i < m; ++i) {
        fin >> a >> b >> d;
        nodes.push_back({a, b, d});
        S[a] = cmmmc(S[a], d);
        S[b] = cmmmc(S[b], d);
    }

    bool ok = true;

    for (node x : nodes) {
        if (cmmdc(S[x.a], S[x.b]) != x.d) {
            ok = false;
        }
    }
    
    if (ok) {
        for (int i = 1; i < S.size(); ++i) {
            fout << S[i] << ' ';
        }
    } else {
        fout << -1 << '\n';
    }

    fout << '\n';

    return 0;
}