Cod sursa(job #153238)

Utilizator filipbFilip Cristian Buruiana filipb Data 10 martie 2008 12:20:30
Problema Oz Scor Ascuns
Compilator cpp Status done
Runda Marime 0.9 kb
#include <stdio.h>

#define MMax 100005
#define NMax 10005

int N, M, v[NMax], X[MMax], Y[MMax], D[MMax];

int gcd(int a, int b)
{ return (b == 0 ? a : gcd(b, a % b)); }

int main(void)
{
    int i, div;
    
    freopen("oz.in", "r", stdin);
    freopen("oz.out", "w", stdout);

    scanf("%d %d", &N, &M);
    for (i = 1; i <= N; ++i)
        v[i] = 1;
    for (i = 1; i <= M; ++i)
    {
        scanf("%d %d %d", &X[i], &Y[i], &D[i]);
        div = gcd(v[X[i]], D[i]);
        v[X[i]] = v[X[i]] * D[i] /div;
        div = gcd(v[Y[i]], D[i]);
        v[Y[i]] = v[Y[i]] * D[i] / div;
    }

    for (i = 1; i <= M; ++i)
    {
        div = gcd(v[X[i]], v[Y[i]]);
        if (div != D[i])
        {
            printf("-1\n");
            return 0;
        }
    }

    for (i = 1; i < N; ++i)
        printf("%d ", v[i]);
    printf("%d\n", v[N]);
    
    return 0;
}