Cod sursa(job #210498)

Utilizator alexeiIacob Radu alexei Data 27 septembrie 2008 21:50:19
Problema Oz Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include<stdio.h>
#define NMAX 10024
#define EXAG 100024
long long A[NMAX],S[EXAG][3];
//Happy coding :)
long long cmmdc(long long a,long long b)
{
     if( !b ) return a;
     return cmmdc( b, a%b );
}

void print(const int N,const int M)
{
    int i;
    long long a1,a2,a3;
    for(i=1; i<=M; ++i)
    {
             a1=S[i][0];a2=S[i][1];a3=S[i][2];
             
             if( cmmdc(A[a1],A[a2])!=a3 )
             {
                 printf("-1\n");
                 return;
             }
    }
    
    for(i=1; i<=N; ++i) printf("%lld ",A[i]);
    printf("\n");
}
    
int main()
{
    freopen("oz.in","r",stdin);
    freopen("oz.out","w",stdout);
    
    int N,M;
    scanf("%d%d",&N,&M);
    
    int i;
    long long a1,a2,a3;
    for(i=1; i<=N; ++i) A[i]=1;
    for(i=1; i<=M; ++i)
    {
             scanf("%lld%lld%lld\n",&S[i][0],&S[i][1],&S[i][2]);
             a1=S[i][0];a2=S[i][1];a3=S[i][2];
             A[a1]=A[a1]*a3/ (cmmdc( A[a1],a3 ) );
             A[a2]=A[a2]*a3/ (cmmdc( A[a2],a3 ) );
    }
    
    print(N,M);
    
    return 0;
}