Cod sursa(job #3032610)

Utilizator Luka77Anastase Luca George Luka77 Data 22 martie 2023 15:20:37
Problema Oz Scor 15
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.21 kb
#include <bits/stdc++.h>
#define int long long
using namespace std;

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

struct Element
{
    int idx1, idx2, gcd;
};

const int NMAX = 1e4 + 5, MMAX = 1e5+5;
int n, m;
int ans[NMAX];
Element arr[MMAX];

inline void solution()
{
    for(int i = 1; i <= n; ++ i)
        ans[i] = 1;

    bool ok = true;
    for(int i = 1; i <= m; ++ i)
    {
        if(__gcd(ans[arr[i].idx1], ans[arr[i].idx2]) > arr[i].gcd)
        {
            ok = false;
        }
        else
        {
            if(__gcd(ans[arr[i].idx1], ans[arr[i].idx2]) == arr[i].gcd)
                continue;
            else
            {
                ans[arr[i].idx1] *= arr[i].gcd / __gcd(ans[arr[i].idx1], ans[arr[i].idx2]);
                ans[arr[i].idx2] *= arr[i].gcd / __gcd(ans[arr[i].idx1], ans[arr[i].idx2]);
            }
        }
    }
    if(ok)
    {
        for(int i = 1; i <= n; ++ i)
            fout << ans[i] << ' ';
    }
    else
    {
        cout << -1 << '\n';
    }
}

signed main()
{
    ios::sync_with_stdio(false);
    fin.tie(NULL);
    fout.tie(NULL);

    fin >> n >> m;

    for(int i = 1; i <= m; ++ i)
    {
        fin >> arr[i].idx1 >> arr[i].idx2 >> arr[i].gcd;
    }

    solution();
}