Cod sursa(job #961285)

Utilizator primulDarie Sergiu primul Data 11 iunie 2013 20:53:23
Problema Oz Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <iostream>
#include <fstream>
 
using namespace std;
 
ifstream in ("oz.in");
ofstream out ("oz.out");
 
const int MAXM = 100010;
 
long long Sol[10010];
int X[MAXM], Y[MAXM], D[MAXM];
 
inline long long gcd (long long A, long long B)
{
    long long r = 1;
 
    while (B){
        r = A % B;
        A = B;
        B = r;
    }
 
    return A;
}
 
inline long long lcm (long long A, long long 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;
}