Cod sursa(job #164396)

Utilizator ProtomanAndrei Purice Protoman Data 24 martie 2008 09:58:25
Problema Oz Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <stdio.h>
#include <stdlib>
#define lim 2000000000
#define mx 100010
long i,n,m,ok;
long x[mx],y[mx];
long long d[mx];

long cmmdc(long a, long b)
{
	while (b>0)
	{
		c=a%b;
		a=b;
		b=c;
	}
	return a;
}

void iesire(int ok)
{
	if (ok==1)
	{	
		printf("-1");
		exit 0;
	}
}

int main()
{
	freopen("oz.in","r",stdin);
	freopen("oz.out","w",stdout);
	scanf("%ld %ld",&n,&m);
	ok=0;
	for (i=1; i<=m; i++)
	{
		scanf("%ld %ld %lld",&x[i],&y[i],&d[i]);
		a[x[i]]=a[x[i]]*(d/cmmdc(a[x[i]],d[i]));
		a[y[i]]=a[y[i]]*(d/cmmdc(a[x[i]],d[i]));
		if (a[x[i]]>lim || a[y[i]]>lim)
			ok=1;
	}
	iesire(ok);
	for (i=1; i<=m; i++)
		if (cmmdc(a[x[i]],a[y[i]])!=d)
			ok=1;
	iesire(ok);
	for (i=1; i<=n; i++)
		printf("%ld",&a[i]);
	fclose(stdin);
	fclose(stdout);
	return 0;
}