Cod sursa(job #189208)

Utilizator AndreyPAndrei Poenaru AndreyP Data 12 mai 2008 21:51:20
Problema Oz Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include<stdio.h>
int n,m;
int v[100010];
int cmmdc(int a,int b)
{
	int r;
	while(b)
	{
		r=a%b;
		a=b;
		b=r;
	}
	return a;
}
int main()
{
	freopen("oz.in","r",stdin);
	freopen("oz.out","w",stdout);
	scanf("%d%d",&n,&m);
	int i,x,y,d,div;
	long long aux;
	for(i=1; i<=n; i++)
		v[i]=1;
	for(i=0; i<m; i++)
	{
		scanf("%d%d%d",&x,&y,&d);
		/*if(v[x]==0)
			v[x]=d;
		else
		{*/
			div=cmmdc(v[x],d);
			aux=d/div*v[x];
			if(aux>2000000000)
			{
				printf("-1\n");
				return 0;
			}
			v[x]=(int)aux;
		//}
		/*if(v[y]==0)
			v[y]=d;
		else
		{*/
			div=cmmdc(v[y],d);
			aux=d/div*v[y];
			if(aux>2000000000)
			{
				printf("-1\n");
				return 0;
			}
			v[y]=(int)aux;
		//}
		div=cmmdc(v[x],v[y]);
		if(div!=d)
		{
			printf("-1\n");
			return 0;
		}
	}
	for(i=1; i<n; i++)
	{
	//	if(v[i]==0)
		//	v[i]=1;
		printf("%d ",v[i]);
	}
	//if(v[n]==0)
	//	v[n]=1;
	printf("%d\n",v[n]);
	return 0;
}