Cod sursa(job #2037241)

Utilizator moise_alexandruMoise Alexandru moise_alexandru Data 11 octombrie 2017 21:46:57
Problema Oz Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream in("oz.in");
ofstream out("oz.out");
const int maxn = 10005;
int v[maxn];

struct str
{
    int a, b, c;
};

vector <str> query;

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

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

inline str make_str(int p, int q, int r)
{
    str rez;
    rez.a = p;
    rez.b = q;
    rez.c = r;
    return rez;
}

int main()
{
    int n, m;
    in >> n >> m;
    for(int i = 1; i <= n; i++)
        v[i] = 1;
    for(int i = 1; i <= m; i++)
    {
        int x, y, p;
        in >> x >> y >> p;
        query.push_back(make_str(x, y, p));
        v[x] = cmmmc(v[x], p);
        v[y] = cmmmc(v[y], p);
    }
    for(auto it : query)
    {
        if(cmmdc(v[it.a], v[it.b]) != it.c)
        {
            out << -1 << "\n";
            return 0;
        }
    }
    for(int i = 1; i <= n; i++)
        out << v[i] << " ";
    out << "\n";
    return 0;
}