Cod sursa(job #180788)

Utilizator slayer4uVictor Popescu slayer4u Data 17 aprilie 2008 15:49:57
Problema Oz Scor 55
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <stdio.h>

long i, j, n, m, a[100001], b[100001], d[100001], v[10001];

long cmmdc(long a, long b)
{
	long r;
	while (b)
	{
		r = a % b;
		a = b;
		b = r;
	}
	return a;
}

long cmmmc(long a, long b)
{
	return a * b / cmmdc(a, b);
}

int main()
{
	freopen ("oz.in", "rt", stdin);
	freopen ("oz.out", "wt", stdout);

	scanf("%ld %ld", &n, &m);

	for (i = 1; i <= m; ++i)
		scanf("%ld %ld %ld", &a[i], &b[i], &d[i]);

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

	for (i = 1; i <= m; ++i)
	{
		v[a[i]] = cmmmc(v[a[i]], d[i]);
		v[b[i]] = cmmmc(v[b[i]], d[i]);
	}

	for (i = 1; i <= m; ++i)
	{
		if (cmmdc(v[a[i]], v[b[i]]) != d[i])
		{
			printf("-1\n");
			return 0;
		}
	}

	for (i = 1; i <= n; ++i)
		printf("%ld ", v[i]);
	printf("\n");

	return 0;
}