Cod sursa(job #165139)

Utilizator gabitzish1Gabriel Bitis gabitzish1 Data 25 martie 2008 15:10:35
Problema Oz Scor 55
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <stdio.h>

int n, m, v[10005];

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

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

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

int verif()
{
	for (int 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("%d %d", &n, &m);
	int i;

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

	for (i = 1; i <= m; i++)
	{
		scanf("%d %d %d",&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("%d ",v[i]);
	else printf("-1\n");

	return 0;
}