Cod sursa(job #164298)

Utilizator gigi_becaliGigi Becali gigi_becali Data 23 martie 2008 21:00:03
Problema Oz Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <cstdio>
#define maxn 100001
int n, m;
long long a[maxn],b[maxn],d[maxn];

long long x[maxn];

inline int gcd(int a, int b)
{
	if(!b) return a;
	return gcd(b, a%b);
}

void solve()
{
	int i,j;
	for(i=1;i<=n;++i) x[i]=1;
	for(i=1;i<=m;++i)
	{
		if(x[a[i]]*d[i]>2000000000) { printf("-1\n"); return;}
		if(x[b[i]]*d[i]>2000000000) { printf("-1\n"); return ;}
		x[a[i]]*=d[i];
		x[b[i]]*=d[i];
	}
	
	for(i=1;i<=m;++i)
		if(gcd(x[a[i]], x[b[i]])!=d[i]) {printf("-1\n"); return;}
	
	for(i=1;i<=n;++i)printf("%lld ", x[i]);
	printf("\n");

	
	
	
}
int main()
{
	freopen("oz.in","r",stdin);
	freopen("oz.out","w",stdout);
	scanf("%d %d\n", &n, &m);
	int i;
	for(i=1;i<=m;++i)scanf("%lld %lld %lld\n", a+i, b+i, d+i);
	
	solve();
	return 0;
}