Cod sursa(job #860674)

Utilizator dariusdariusMarian Darius dariusdarius Data 20 ianuarie 2013 16:42:11
Problema Oz Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include<stdio.h>
typedef long long lint;
lint sol[100005];
struct MyStruct {int i,j;lint d;} a[100005];
lint gcd(lint a,lint b)
{
    return b==0?a:gcd(b,a%b);
}
lint lcm(lint a,lint b)
{
    return a/gcd(a,b)*b;
}
int main()
{
    freopen("oz.in","r",stdin);
    freopen("oz.out","w",stdout);
    int n,m,i;
    scanf("%d%d",&n,&m);
    for(i=1;i<=n;i++) sol[i]=1;
    for(i=1;i<=m;i++)
    {
        scanf("%d%d%lld",&a[i].i,&a[i].j,&a[i].d);
        sol[a[i].i]=lcm(sol[a[i].i],a[i].d);
        sol[a[i].j]=lcm(sol[a[i].j],a[i].d);
    }
    for(i=1;i<=m;i++)
        if(gcd(sol[a[i].i],sol[a[i].j])!=a[i].d)
        {printf("-1\n");return 0;}
    for(i=1;i<=n;i++)
        printf("%lld ",sol[i]);
    puts("");
    return 0;
}