Cod sursa(job #166121)

Utilizator swift90Ionut Bogdanescu swift90 Data 27 martie 2008 14:30:25
Problema Oz Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include<stdio.h>
struct diviz{
	int a,b,d;
}nr[100100];
int sol[10100];
int cmmdc(int a,int b){
	if(!b)
		return a;
	return cmmdc(b,a%b);
}
int main(){
	freopen("oz.in","r",stdin);
	freopen("oz.out","w",stdout);
	int n,m,i,ok;
	scanf("%d%d",&n,&m);
	for(i=1;i<=n;++i)
		sol[i]=1;
	for(i=0;i<m;++i){
		scanf("%d%d%d",&nr[i].a,&nr[i].b,&nr[i].d);
		sol[nr[i].a]=(sol[nr[i].a]*nr[i].d)/cmmdc(sol[nr[i].a],nr[i].d);
		sol[nr[i].b]=(sol[nr[i].b]*nr[i].d)/cmmdc(sol[nr[i].b],nr[i].d);
	}
	ok=1;
	for(i=0;i<m && ok;++i){
		if(sol[nr[i].a]%nr[i].d || sol[nr[i].b]%nr[i].d)
			ok=0;
	}
	if(!ok){
		printf("-1\n");
		fclose(stdin);
		fclose(stdout);
		return 0;
	}
	
	for(i=1;i<n;++i)
		printf("%d ",sol[i]);
	printf("%d\n",sol[n]);
	
	fclose(stdin);
	fclose(stdout);
	return 0;
}