Cod sursa(job #1135652)

Utilizator paunmatei7FMI Paun Matei paunmatei7 Data 8 martie 2014 09:57:37
Problema Oz Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <cstdio>
#include <iostream>

#define NMAX 100007
#define LL long long

using namespace std;

int n, m, a[NMAX], b[NMAX];
LL c[NMAX], v[NMAX];

inline LL gcd(LL a, LL b){
    if(! b)
        return a;
    return gcd(b, a % b);
}

inline LL cmmmc(LL a, LL b){
    return a * b / gcd(a, b);
}

int main(){
    freopen("oz.in", "r", stdin);
    freopen("oz.out", "w", stdout);
    scanf("%d %d", &n, &m);
    for(int i = 1; i <= n; ++i)
        v[i] = 1;
    for(int i = 1; i <= m; ++i){
        scanf("%d %d %lld", &a[i], &b[i], &c[i]);
        v[a[i]] = cmmmc(v[a[i]], c[i]);
        v[b[i]] = cmmmc(v[b[i]], c[i]);
    }
    for(int i = 1; i <= m; ++i)
        if(gcd(v[a[i]], v[b[i]]) != c[i]){
            printf("-1\n");
            return 0;
        }
    for(int i = 1; i <= n; ++i)
        printf("%d ", v[i]);
    return 0;
}