Cod sursa(job #166139)

Utilizator swift90Ionut Bogdanescu swift90 Data 27 martie 2008 15:00:27
Problema Oz Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include<stdio.h>
struct diviz{
	int a,b;
	long long d;
}nr[100100];
long long 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,a,b;
	scanf("%d%d",&n,&m);
	for(i=1;i<=n;++i)
		sol[i]=1;
	for(i=0;i<m;++i){
		scanf("%d%d%lld",&nr[i].a,&nr[i].b,&nr[i].d);
		a=nr[i].a;
		b=nr[i].b;
		sol[a]=(sol[a]*nr[i].d)/cmmdc(sol[a],nr[i].d);
		sol[b]=(sol[b]*nr[i].d)/cmmdc(sol[b],nr[i].d);
	}
	ok=1;
	for(i=0;i<m && ok;++i){
		if(cmmdc(sol[nr[i].a],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("%lld ",sol[i]);
	printf("%lld\n",sol[n]);
	
	fclose(stdin);
	fclose(stdout);
	return 0;
}