Cod sursa(job #164229)

Utilizator marinaMarina Horlescu marina Data 23 martie 2008 19:12:41
Problema Oz Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
//Preoni 2008 Runda finala Clasele 5-8
#include <stdio.h>
#define INPUT "oz.in"
#define OUTPUT "oz.out"
#define NMAX 10001
#define MMAX 100001

int N, M;
int v[NMAX];
int ii[MMAX], jj[MMAX], d[MMAX];

inline int cmmdc(int A, int B)
{
	while(A && B)
		if(A > B) A %= B;
		else B %= A;
	if(A) return A;
	return B;
}

inline int cmmmc(int A, int B)
{
	return (int)((long long)A*B/cmmdc(A, B));
}

int main()
{
	freopen(INPUT, "r", stdin);
	freopen(OUTPUT, "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", &ii[i], &jj[i], &d[i]);
		v[ii[i]] = cmmmc(v[ii[i]], d[i]);
		v[jj[i]] = cmmmc(v[jj[i]], d[i]);
	}
	
	int ok = 1;
	for(i = 1; i <= M && ok; ++i)
		if(cmmdc(v[ii[i]], v[jj[i]]) != d[i]) ok = 0;
	
	if(ok)
	{
		for(i = 1; i < N; ++i)
			printf("%d ", v[i]);
		printf("%d\n", v[N]);
	}
	else printf("-1\n");
	return 0;
}