Cod sursa(job #237326)

Utilizator AndreiDDiaconeasa Andrei AndreiD Data 29 decembrie 2008 16:13:56
Problema Oz Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <stdio.h>

long long N,M,v[10000],i,j,d,a[100000],b[100000],c[100000],ok;

long long cmmdc(long long a, long long b)
{
    long long r;
    while (b)
    {
        r=a%b;
        a=b;
        b=r;
    }
    return a;
}

int main()
{
    freopen("oz.in","r",stdin);
    scanf("%lld %lld\n",&N,&M);
    for (i=1;i<=N;++i)
         v[i]=1;
    for (i=1;i<=M;++i)
    {
        scanf("%lld %lld %lld\n", &a[i],&b[i],&c[i]);
        v[a[i]]=(v[a[i]]*c[i])/cmmdc(v[a[i]],c[i]);
        v[b[i]]=(v[b[i]]*c[i])/cmmdc(v[b[i]],c[i]);
    }
    ok=1;
    for (i=1;i<=M;++i)
        if (cmmdc(v[a[i]],v[b[i]])!=c[i])
             {
                    ok=0;
                    break;
             }
    freopen("oz.out","w",stdout);
    if (!ok) printf("-1");
    else
    {
    for (i=1;i<=N;++i)
          printf("%lld ", v[i]);
    }
    return 0;
}