Cod sursa(job #189206)

Utilizator AndreyPAndrei Poenaru AndreyP Data 12 mai 2008 21:48:04
Problema Oz Scor 45
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 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=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*v[x]/div;
			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*v[y]/div;
			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;
}