Cod sursa(job #166320)

Utilizator bogdanhm999Casu-Pop Bogdan bogdanhm999 Data 27 martie 2008 20:35:18
Problema Oz Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <stdio.h>
#define limit 2000000000

long n,m,i,a,b,d,v[10005],aux;

long cmmdc(long a,long b){
    while (a!=b){
        if (a>b){a=a%b;if (!a)a=b;}
        else {b=b%a;if (!b)b=a;}
    }
return a;
}

int main(){
    freopen("oz.in","r",stdin);
    freopen("oz.out","w",stdout);

    scanf("%ld %ld",&n,&m);
    for (i=1;i<=n;i++)
        v[i]=1;
    for (i=1;i<=m;i++){
        scanf("%ld %ld %ld",&a,&b,&d);
        v[a]/=cmmdc(v[a],d);
        if (limit/v[a]<d){printf("-1\n");return 0;}
        v[a]*=d;
        v[b]/=cmmdc(v[b],d);
        if (limit/v[b]<d){printf("-1\n");return 0;}
        v[b]*=d;
    }
    for (i=1;i<=n;i++)
        if (v[i]==0){printf("-1\n");return 0;}
    //verificare
    fseek(stdin,0,0);
    scanf("%ld %ld",&n,&m);
    for (i=1;i<=m;i++){
        scanf("%ld %ld %ld",&a,&b,&d);
        if (cmmdc(v[a],v[b])!=d){printf("-1\n");return 0;}
    }
    for (i=1;i<=n;i++)
        printf ("%ld ",v[i]);
    printf("\n");

return 0;
}