Cod sursa(job #165135)

Utilizator blasterzMircea Dima blasterz Data 25 martie 2008 14:54:46
Problema Oz Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <cstdio>
#define maxn 100001
int n, m;
long long a[maxn],b[maxn],d[maxn];

long long x[maxn];

inline long long gcd(long long a,long long b)
{
	if(!b) return a;
	return gcd(b, a%b);
}
inline long long  cmmmc(long long a, long long b)
{
    return a*b/gcd(a,b);
}

void solve()
{
	int i,j;
	for(i=1;i<=n;++i) x[i]=1;
	for(i=1;i<=m;++i)
	{
		if(cmmmc(x[a[i]], d[i])>2000000000) { printf("-1\n"); return;}
		if(cmmmc(x[b[i]], d[i])>2000000000) { printf("-1\n"); return ;}
		x[a[i]]=cmmmc(x[a[i]], d[i]);
		x[b[i]]=cmmmc(x[b[i]], d[i]);
	//	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;
}