Cod sursa(job #169162)

Utilizator cos_minBondane Cosmin cos_min Data 1 aprilie 2008 11:59:51
Problema Oz Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 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 long long Cmmdc(long long a,long long  b) {
	if ( b == 0 ) return a;
	return Cmmdc(b,a%b);
}

int N, M;
long long aux = 2000000001LL;
long long X[dim], Y[dim], C[dim];
long long T[dim];

int main()
{
	bool ok = 1;
	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 && ok; i++ )
	{
		long long  a = X[i], b = Y[i];
		/*if ( T[a] == 0 ) T[a] = C[i];
		if ( T[b] == 0 ) T[b] = C[i];

		if ( C[i] / Cmmdc(T[a],C[i]) >= aux / T[a] ) ok = 0;
	      	if ( C[i] / Cmmdc(T[b],C[i]) >= aux / T[b] ) ok = 0;
		
		if ( !ok ) continue;	
		
		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;*/
	}

	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] );
}