Cod sursa(job #164658)

Utilizator filipbFilip Cristian Buruiana filipb Data 24 martie 2008 17:34:46
Problema Oz Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <stdio.h>

int N, M, v[10005], X[100005], Y[100005], D[100005];

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

int main(void)
{
    int i;
    
    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]);
        v[X[i]] = v[X[i]] * (D[i]/gcd(v[X[i]], D[i]));
        v[Y[i]] = v[Y[i]] * (D[i]/gcd(v[Y[i]], D[i]));
    }

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

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