Cod sursa(job #163838)

Utilizator gabitzish1Gabriel Bitis gabitzish1 Data 23 martie 2008 11:16:39
Problema Oz Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <stdio.h>

int n, m, v[10005];

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


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

	scanf("%d %d", &n, &m);
	int i, a, b, d, p, q, x, y;

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

	for (i = 1; i <= m; i++)
	{
		scanf("%d %d %d",&a,&b,&d);
		p = cmmdc(v[a],v[b]);
		if (d >= p)	q = d / p;
		else q = p / d;

		x = q;

		if (cmmdc(v[a],q) == 1) v[a] *= x;
		else if (v[a] >= x) v[a] *= (v[a] / x);
		else v[a] *= (x / v[a]);

		if (cmmdc(v[b],q) == 1) v[b] *= x;
		else if (v[b] >= x) v[b] *= (v[b] / x);
		else v[b] *= (x / v[b]);
	}

	for (i = 1; i <= n; i++) printf("%d ",v[i]);
	return 0;
}