Cod sursa(job #237037)

Utilizator Mishu91Andrei Misarca Mishu91 Data 28 decembrie 2008 22:43:59
Problema Oz Scor 35
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <cstdio>

#define MAX_N 10005

long long V[MAX_N], D[MAX_N];
int I[MAX_N], J[MAX_N];
int N, M;

long long gcd(long long a, long long b)
{
    if(b == 0) return a;
    return gcd(b, a % b);
}

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

int main()
{
    freopen("oz.in","rt",stdin);
    freopen("oz.out","wt",stdout);

    scanf("%d %d",&N, &M);

    for(int i = 1; i <= N; ++i)
        V[i] = 1;

    for(int i = 1; i <= M; ++i)
    {
        int x, y;
        long long z;
        scanf("%d %d %lld",&x, &y, &z);
        V[x] = cmmmc(V[x], z);
        V[y] = cmmmc(V[y], z);

        I[i] = x, J[i] = y, D[i] = z;
    }

    for(int i = 1; i <= M; ++i)
        if(gcd(V[I[i]], V[J[i]]) != D[i])
        {
            printf("-1\n");
            return 0;
        }

    for(int i = 1; i <= N; ++i)
        printf("%lld ", V[i]);
}