Cod sursa(job #319302)

Utilizator GheorgheMihaiMihai Gheorghe GheorgheMihai Data 31 mai 2009 12:26:04
Problema Oz Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include<stdio.h>
struct relatii
{
	long long x,y,d;
};
long long n,m;
long long v[10002];
relatii sol[100002];

long long cmmdc(long long a, long long b)
{
	long long r;
	while(b)
	{
		r=a%b;
		a=b;
		b=r;
	}
	return a;
}

long long cmmmc(long long a, long long b)
{
	return a*b/cmmdc(a,b);
}

int corect()
{
	int i;
	for(i=1;i<=m;i++)
	{
		if(cmmdc(v[sol[i].x],v[sol[i].y])!=sol[i].d)
			return 0;
	}
	return 1;
}

int main()
{
	freopen("oz.in","r",stdin);
	freopen("oz.out","w",stdout);
	scanf("%lld%lld",&n,&m);
	long long i;
	for(i=1;i<=n;i++)
		v[i]=1;
	for(i=1;i<=m;i++)
	{
		scanf("%lld%lld%lld",&sol[i].x,&sol[i].y,&sol[i].d);
		v[sol[i].x]=cmmmc(v[sol[i].x],sol[i].d);
		v[sol[i].y]=cmmmc(v[sol[i].y],sol[i].d);
	}
	if(corect())
	{
		for(i=1;i<=n;i++)
			printf("%lld ",v[i]);
		printf("\n");
	}
	else
		printf("-1\n");
	return 0;
}