Cod sursa(job #973956)

Utilizator gbi250Gabriela Moldovan gbi250 Data 16 iulie 2013 03:20:49
Problema Oz Scor 55
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <cstdio>
#define SIZE 100002
using namespace std;
int n, m, i, x[SIZE], y[SIZE], d[SIZE];
long long v[10002];

long long gcd(long long x, long long y)
{
    int r=1;
    while(y)
    {
        r=x%y; x=y; y=r;
    }
    return x;
}

long long lcm(int x, int y)
{
    return (long long)(x*y/gcd(x, y));
}

bool verif()
{
    for(int i=1;i<=m;++i)
       if( gcd(v[x[i]], v[y[i]])!=d[i] )
            return 0;
    return 1;
}

int main()
{
    freopen("oz.in", "r", stdin);
    freopen("oz.out", "w", stdout);
    scanf("%d %d", &n, &m);
    for(i=1;i<=n;++i)
        v[i]=1;
    for(i=1;i<=m;++i)
    {
        scanf("%d %d %d", &x[i], &y[i], &d[i]);
        v[x[i]]=lcm(v[x[i]], d[i]);
        v[y[i]]=lcm(v[y[i]], d[i]);
    }
    if(verif())
        for(i=1;i<=n;++i)
            printf("%lld ", v[i]);
    else
        printf("-1\n");
    return 0;
}