Cod sursa(job #165141)

Utilizator gabitzish1Gabriel Bitis gabitzish1 Data 25 martie 2008 15:13:45
Problema Oz Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <stdio.h>

long long n, m, v[10005];

typedef struct
{
	long long a, b, d;
} op;
op a[100004];

long long cmmdc(long long x, long long y)
{
	if (!y) return x;
	else return cmmdc(y, x % y);
}

long long cmmmc(long long x, long long y)
{
	return (x * y) / cmmdc(x,y);
}

long long verif()
{
	for (long long i = 1; i <= m; i++)
		if (cmmdc(v[a[i].a],v[a[i].b]) != a[i].d) return 0;
	return 1;
}


int main()
{
	freopen("oz.in","r",stdin);
	freopen("oz.out","w",stdout);

	scanf("%lld %lld", &n, &m);
	long long i;

	for (i = 1; i <= n; i++) v[i] = 1;

	for (i = 1; i <= m; i++)
	{
		scanf("%lld %lld %lld",&a[i].a,&a[i].b,&a[i].d);
		v[a[i].a] = cmmmc(v[a[i].a],a[i].d);
		v[a[i].b] = cmmmc(v[a[i].b],a[i].d);
	}

	if (verif()) for (i = 1; i <= n; i++) printf("%lld ",v[i]);
	else printf("-1\n");

	return 0;
}