Cod sursa(job #285146)

Utilizator Bogdan_tmmTirca Bogdan Bogdan_tmm Data 22 martie 2009 13:31:00
Problema Oz Scor 55
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include<iostream>
#include<stdio.h>
struct asd{long i,j,d;} tr[100010];
long sol[10010],n,m,i;
inline long cmmdc(long a,long b)
{
	if(!b) return a;
	return cmmdc(b,a%b);
}
int main()
{
	freopen("oz.in","r",stdin);
	freopen("oz.out","w",stdout);
	scanf("%ld%ld",&n,&m);
	for(i=1;i<=n;i++) sol[i]=1;
	for(i=1;i<=m;i++)
	{
		scanf("%ld%ld%ld",&tr[i].i,&tr[i].j,&tr[i].d);
		sol[tr[i].i]=(sol[tr[i].i]*tr[i].d)/cmmdc(sol[tr[i].i],tr[i].d);
		sol[tr[i].j]=(sol[tr[i].j]*tr[i].d)/cmmdc(sol[tr[i].j],tr[i].d);
	}
	for(i=1;i<=m;i++)
		if(cmmdc(sol[tr[i].i],sol[tr[i].j])!=tr[i].d)
		{
			printf("-1\n");
			return 0;
		}
	for(i=1;i<=n;i++)
		printf("%ld ",sol[i]);
	printf("\n");
	return 0;
}