Cod sursa(job #487135)

Utilizator Teodor94Teodor Plop Teodor94 Data 23 septembrie 2010 21:38:54
Problema Oz Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include<cstdio>

const int N=10005;
const int M=100005;

int n,m,a[N],x[M],y[M],d[M];

void init()
{
	for (int i=1;i<=n;++i)
		a[i]=1;
}

void afis()
{
	for (int i=1;i<=n;++i)
		printf("%d ",a[i]);
	printf("\n");
}

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);
	init();
	for (int i=1;i<=m;++i)
	{
		scanf("%d%d%d",&x[i],&y[i],&d[i]);
		a[x[i]]*=d[i];
		a[y[i]]*=d[i];
	}
	int cmm,xx;
	for (int i=1;i<=m;++i)
	{
		cmm=cmmdc(a[x[i]],a[y[i]]);
		if (cmm!=d[i] && cmm%d[i]==0)
		{
			xx=cmm/d[i];
			a[x[i]]/=xx;
			a[y[i]]/=xx;
		}
		else
		if (cmm%d[i]!=0)
		{
			printf("-1\n");
			return 0;
		}
	}
	afis();
	return 0;
}