Cod sursa(job #169158)

Utilizator cos_minBondane Cosmin cos_min Data 1 aprilie 2008 11:50:00
Problema Oz Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <stdio.h>
#include <fstream>
using namespace std;

#define in "oz.in"
#define out "oz.out"
#define dim 10001
//#define a X[i]
//#define b Y[i]

inline int Cmmdc(int a, int b) {
	if ( b == 0 ) return a;
	return Cmmdc(b,a%b);
}

int N, M;
int X[dim], Y[dim], C[dim];
int T[dim];

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

	memset(T,0,sizeof(T));

	scanf("%d%d", &N, &M);
	for ( int i = 1; i <= M; i++ )
	       scanf("%d%d%d", &X[i], &Y[i], &C[i]);

	for ( int i = 1; i <= M; i++ )
	{
		int a = X[i], b = Y[i];
		if ( T[a] == 0 ) T[a] = C[i];
		if ( T[b] == 0 ) T[b] = C[i];

		int x = ((C[i])/Cmmdc(T[a],C[i]))*T[a];
	       	int y = ((C[i])/Cmmdc(T[b],C[i]))*T[b];
		T[a] = x, T[b] = y;
	}

	bool ok = 1;

	for ( int i = 1; i <= M; i++ )
	{
		int a = X[i], b = Y[i];
		if ( Cmmdc(T[a],T[b]) != C[i] ) ok = 0;
	}	
	
	if (!ok)
	{
		printf("-1");
		return 0;
	}

	for ( int i = 1; i <= N; i++ )
		printf("%d ", T[i] );
}