Cod sursa(job #2913653)

Utilizator vlad2009Vlad Tutunaru vlad2009 Data 15 iulie 2022 20:44:19
Problema Oz Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1 kb
#include <fstream>
#define int long long

// orz

using namespace std;

const int MAX_N = 1e5;

struct mata {
    int l;
    int r;
    int d;
};

int a[MAX_N + 1];
mata v[MAX_N + 1];
int n, m;

int gcd(int a, int b) {
    if (b == 0) {
        return a;
    }
    return gcd(b, a % b);
}

int lcm(int a, int b) {
    return a * b / gcd(a, b);
}

signed main() {
    ifstream fin("oz.in");
    ofstream fout("oz.out");
    fin >> n >> m;
    for (int i = 1; i <= n; i++) {
        a[i] = 1;
    }
    for (int i = 1; i <= m; i++) {
        fin >> v[i].l >> v[i].r >> v[i].d;
        a[v[i].l] = lcm(a[v[i].l], v[i].d);
        a[v[i].r] = lcm(a[v[i].r], v[i].d);
    }
    bool ok = true;
    for (int i = 1; i <= m; i++) {
        if (gcd(a[v[i].l], a[v[i].r]) != v[i].d) {
            ok = false;
        }
    }
    if (ok) {
        for (int i = 1; i <= n; i++) {
            fout << a[i] << " ";
        }
    } else {
        fout << "-1";
    }
    return 0;
}