Cod sursa(job #428123)

Utilizator nandoLicker Nandor nando Data 28 martie 2010 21:03:54
Problema Oz Scor 55
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <cstdio>

inline int cmmdc(int a,int b){
	int r;
	while(b){
		r=a%b;
		a=b;
		b=r;
	}
	return a;
}
inline int cmmmc(int a,int b){
	return 1L*a*b/cmmdc(a,b);
}

FILE* fin=fopen("oz.in","r");
FILE* fout=fopen("oz.out","w");

#define NMAX 10000
#define MMAX 100000

int n,m,v[NMAX],per[MMAX][3];

int main(){
	fscanf(fin,"%d %d",&n,&m);

	for(int i=0;i<n;i++){
		v[i]=1;
	}

	for(int i=0;i<m;i++){
		fscanf(fin,"%d %d %d",&per[i][0],&per[i][1],&per[i][2]);
		v[per[i][0]-1]=cmmmc(v[per[i][0]-1],per[i][2]);
		v[per[i][1]-1]=cmmmc(v[per[i][1]-1],per[i][2]);
	}
	bool good=true;
	for(int i=0;i<m;i++){
		if(cmmdc(v[per[i][0]-1],v[per[i][1]-1])!=per[i][2]){
			good=false;
			break;
		}
	}
	if(good){
		for(int i=0;i<n;i++){
			fprintf(fout,"%d ",v[i]);
		}
	}else{
		fprintf(fout,"-1");
	}
	
	fclose(fin);
	fclose(fout);
	return 0;
}