Cod sursa(job #973954)

Utilizator gbi250Gabriela Moldovan gbi250 Data 16 iulie 2013 02:58:29
Problema Oz Scor 55
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 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)
{
    if(x==1 || y==1)
        return 1;
    int r=x%y;
    while(r)
    {
        x=y; y=r; r=x%y;
    }
    return y;
}

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;
}