Cod sursa(job #163533)

Utilizator raduzerRadu Zernoveanu raduzer Data 22 martie 2008 14:43:53
Problema Oz Scor 35
Compilator cpp Status done
Runda preONI 2008, Runda Finala, Clasele 5-8 Marime 1.37 kb
#include <stdio.h>

int n,m,x,y,c,a[10010],q;
long long z;

int cmmdc(int a, int b)
{
        int r;
        while (b>0)
        {
                r=a;
                a=b;
                b=r%b;
        }
        return a;
}

int main()
{
        freopen("oz.in","r",stdin);
        freopen("oz.out","w",stdout);
        scanf("%d%d",&n,&m);
        int i;
        q=0;
        for (i=1; i<=m; ++i)
        {
                scanf("%d%d%d",&x,&y,&c);
                if (a[x]>0)
                {
                        z=a[x]*(c/cmmdc(a[x],c));
                        a[x]=z;
                }
                else a[x]=c;
                if (z>2000000000)
                {
                        q=1;
                        break;
                }
                if (a[y]>0)
                {
                        z=a[y]*(c/cmmdc(a[y],c));
                        a[y]=z;
                }
                else a[y]=c;
                if (z>2000000000)
                {
                        q=1;
                        break;
                }
                if (cmmdc(a[x],a[y])!=c)
                {
                        q=1;
                        break;
                }
        }
        if (q==1) printf("-1\n");
        if (q==0) for (i=1; i<=n; ++i) printf("%d ",a[i]);
        printf("\n");
        return 0;
}