Cod sursa(job #2910588)

Utilizator _andrei4567Stan Andrei _andrei4567 Data 22 iunie 2022 16:04:29
Problema Oz Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1 kb
#include <stdio.h>
#include <vector>
#include <tuple>
#include <algorithm>

#define int long long

using namespace std;

FILE *fin, *fout;

const int N = 1e4;
int v[N + 1];

int n, q, a, b, d;

vector <tuple <int, int, int> > vv;

signed main()
{
    fin = fopen ("oz.in", "r");
    fout = fopen ("oz.out", "w");
    fscanf(fin, "%d%d", &n, &q);
    for (int i = 1; i <= n; ++i)
        v[i] = 1;
    for (; q; --q)
    {
        fscanf(fin, "%d%d%d", &a, &b, &d);
        int cmmd1, cmmd2;
        cmmd1 = __gcd(v[a], d);
        cmmd2 = __gcd(v[b], d);
        vv.push_back(make_tuple(a, b, d));
        v[a] *= d / cmmd1;
        v[b] *= d / cmmd2;
    }
    bool ok = true;
    for (auto it : vv)
        if (__gcd(v[get<0>(it)], v[get<1>(it)]) != get<2>(it))
        {
            ok = false;
            break;
        }
    if (ok)
        for (int i = 1; i <= n; ++i)
            fprintf(fout, "%d ", v[i]);
    else
        fprintf(fout, "-1\n");
    return 0;
}