Cod sursa(job #165370)

Utilizator za_wolfpalianos cristian za_wolf Data 25 martie 2008 21:42:23
Problema Oz Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include<stdio.h>
#define NMAX 10010
long k,x[NMAX],a[NMAX*10],b[NMAX*10],c[NMAX*10],i,n,m;
long cmmdc(long a, long b)
{
    while (a&&b)
    {
        if (a>b)
            a=a%b;
        else
            b=b%a;
    }
    if (a)
        return a;
    return b;
}
long cmmmc(long a,long b)
{
    return a/cmmdc(a,b)*b;
}
int main()
{
    freopen("oz.in","r",stdin);
    freopen("oz.out","w",stdout);
    scanf("%ld%ld",&n,&m);
    for (i=1;i<=n;i++)
        x[i]=1;
    for (i=1;i<=m;i++)
    {
        scanf("%ld%ld%ld",&a[i],&b[i],&c[i]);
        x[a[i]]=x[a[i]]/cmmdc(x[a[i]],c[i])*c[i];
        x[b[i]]=x[b[i]]/cmmdc(x[b[i]],c[i])*c[i];
    }
    for (i=1;i<=m;i++)
        if (cmmdc(x[a[i]],x[b[i]])!=c[i])
        {
            printf("-1\n");
            return 0;
        }
        
    for (i=1;i<=n;i++)
        printf("%ld ",x[i]);
    printf("\n");
    return 0;
}