Cod sursa(job #937251)

Utilizator mvcl3Marian Iacob mvcl3 Data 10 aprilie 2013 00:08:57
Problema Oz Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <fstream>
#define LL long long
#define Max_Size 10009
#define MAX_Size_M 100009
using namespace std;

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

int N, M;
LL A[Max_Size];

struct obj {
    int a;
    int b;
    LL d;
} T[MAX_Size_M];

inline LL Cmmdc(LL a, LL b) {
    LL r = 1;

    while(r) {
        r = a % b;
        a = b;
        b = r;
    }

    return a;
}

inline LL Cmmmc(LL a, LL b) {

    return (a * b) / Cmmdc(a, b);
}

inline bool verif() {
    for(int i = 1; i <= M; ++i)
        if(Cmmdc(A[T[i].a], A[T[i].b]) != T[i].d) return false;

    return true;
}

int main() {

    f >> N >> M;

    for(int i = 1; i <= M; ++i) {
        f >> T[i].a >> T[i].b >> T[i].d;

        if(A[T[i].a])
            A[T[i].a] = Cmmmc(A[T[i].a], T[i].d);
        else
            A[T[i].a] =  T[i].d;

        if(A[T[i].b])
            A[T[i].b] = Cmmmc(A[T[i].b], T[i].d);
        else
            A[T[i].b] =  T[i].d;
    }

    bool ok = verif();

    if(!ok) g << -1;
    else
        for(int i = 1; i <= N; ++i) g << (A[i] ? A[i] : 1) << ' ';

    g << '\n';

    g.close();
    return 0;
}