Cod sursa(job #165141)
#include <stdio.h>
long long n, m, v[10005];
typedef struct
{
long long a, b, d;
} op;
op a[100004];
long long cmmdc(long long x, long long y)
{
if (!y) return x;
else return cmmdc(y, x % y);
}
long long cmmmc(long long x, long long y)
{
return (x * y) / cmmdc(x,y);
}
long long verif()
{
for (long long i = 1; i <= m; i++)
if (cmmdc(v[a[i].a],v[a[i].b]) != a[i].d) return 0;
return 1;
}
int main()
{
freopen("oz.in","r",stdin);
freopen("oz.out","w",stdout);
scanf("%lld %lld", &n, &m);
long long i;
for (i = 1; i <= n; i++) v[i] = 1;
for (i = 1; i <= m; i++)
{
scanf("%lld %lld %lld",&a[i].a,&a[i].b,&a[i].d);
v[a[i].a] = cmmmc(v[a[i].a],a[i].d);
v[a[i].b] = cmmmc(v[a[i].b],a[i].d);
}
if (verif()) for (i = 1; i <= n; i++) printf("%lld ",v[i]);
else printf("-1\n");
return 0;
}