Cod sursa(job #3197126)

Utilizator BurloiEmilAndreiBurloi Emil Andrei BurloiEmilAndrei Data 25 ianuarie 2024 18:34:57
Problema Oz Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <bits/stdc++.h>

using namespace std;

using ll = long long;
#define pb push_back

const string FILE_NAME = "oz";
const int MAX_N = 1e4, MAX_M = 1e5;

int v[MAX_N + 5], j[MAX_M + 5], k[MAX_M + 5], d[MAX_M + 5];

int main() {
#ifndef LOCAL
    ifstream cin(FILE_NAME + ".in");
    ofstream cout(FILE_NAME + ".out");
#endif

    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    int n, m, i;

    cin >> n >> m;

    for (i = 1; i <= n; i++) {
        v[i] = 1;
    }
    for (i = 0; i < m; i++) {
        cin >> j[i] >> k[i] >> d[i];
        /* construiesc sirul */
        v[j[i]] *= (d[i] / (__gcd(d[i], v[j[i]]))); /* ce mai trebuie sa adun */
        v[k[i]] *= (d[i] / (__gcd(d[i], v[k[i]])));
    }

    /* verificare */
    for (i = 0; i < m; i++) {
        if (__gcd(v[j[i]], v[k[i]]) != d[i]) {
            cout << "-1";
            return 0;
        }
    }

    /* afisare */
    for (i = 1; i <= n; i++) {
        cout << v[i] << " ";
    }
    return 0;
}