Cod sursa(job #285061)

Utilizator Bogdan_tmmTirca Bogdan Bogdan_tmm Data 22 martie 2009 12:37:21
Problema Oz Scor 55
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 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);
}
inline void set()
{
	if(i>n) return;
	sol[i++]=1;
	set();
}
int main()
{
	freopen("oz.in","r",stdin);
	freopen("oz.out","w",stdout);
	scanf("%ld%ld",&n,&m);
	set();
	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);
	}
	long a=cmmdc(12,3);
	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;
}