Cod sursa(job #947495)

Utilizator Stefex09Stefan Teodorescu Stefex09 Data 7 mai 2013 17:24:17
Problema Oz Scor 55
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <iostream>
#include <fstream>

using namespace std;

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

const int MAXM = 100010;

int Sol[10010];
int X[MAXM], Y[MAXM], D[MAXM];

inline int gcd (int A, int B)
{
    int r = 1;

    while (B){
        r = A % B;
        A = B;
        B = r;
    }

    return A;
}

inline int lcm (int A, int B)
{
    return A * B / gcd (A, B);
}

int main()
{
    int N, M, i;
    bool ok = 1;

    in >> N >> M;
    for (i = 1; i <= N; i ++)
        Sol[i] = 1;
    for (i = 1; i <= M; i ++){
        in >> X[i] >> Y[i] >> D[i];

        Sol[X[i]] = lcm (Sol[X[i]], D[i]);
        Sol[Y[i]] = lcm (Sol[Y[i]], D[i]);
    }

    for (i = 1; i <= M; i ++)
        if (gcd (Sol[X[i]], Sol[Y[i]]) != D[i])
            ok = 0;

    if (!ok)
        out << -1;
    else{
        for (i = 1; i <= N; i ++)
            out << Sol[i] << " ";
    }

    return 0;
}