Cod sursa(job #236777)

Utilizator DraStiKDragos Oprica DraStiK Data 28 decembrie 2008 14:43:42
Problema Oz Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <stdio.h>
long long unsigned a[10005];
int b[100005][3];
int n,m;
long long unsigned euclid (long long unsigned a,long long unsigned b)
{
    long long unsigned r;
    do
    {
        r=a%b;
        a=b;
        b=r;
    }
    while (r);  
    return a;
}
void read ()
{
    int i;
    scanf ("%d%d",&n,&m);
    for (i=1; i<=n; ++i)
        a[i]=1;
    for (i=1; i<=m; ++i)
    {
		scanf ("%d%d%d",&b[i][0],&b[i][1],&b[i][2]);
		a[b[i][0]]=a[b[i][0]]*b[i][2]/euclid (a[b[i][0]],b[i][2]);
		a[b[i][1]]=a[b[i][1]]*b[i][2]/euclid (a[b[i][1]],b[i][2]);
    }
}
int check ()
{
    int i;
    for (i=1; i<=m; ++i)
        if (euclid (a[b[i][0]],a[b[i][1]])!=b[i][2])
            return 0;
    return 1;
}
void print ()
{
    int i;
    for (i=1; i<=n; ++i)
        printf ("%llu ",a[i]);
}
int main ()
{
    freopen ("oz.in","r",stdin);
    freopen ("oz.out","w",stdout);
    read ();
    if (check ())
        print ();
    else
        printf ("-1");
    return 0;
}