Cod sursa(job #165139)
#include <stdio.h>
int n, m, v[10005];
typedef struct
{
int a, b, d;
} op;
op a[100004];
int cmmdc(int x, int y)
{
if (!y) return x;
else return cmmdc(y, x % y);
}
int cmmmc(int x, int y)
{
return (x * y) / cmmdc(x,y);
}
int verif()
{
for (int 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("%d %d", &n, &m);
int i;
for (i = 1; i <= n; i++) v[i] = 1;
for (i = 1; i <= m; i++)
{
scanf("%d %d %d",&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("%d ",v[i]);
else printf("-1\n");
return 0;
}