Pagini recente » Cod sursa (job #1009937) | Cod sursa (job #2270117) | Cod sursa (job #1881233) | Cod sursa (job #471480) | Cod sursa (job #2213394)
#include <stdio.h>
#include <vector>
#include <algorithm>
#include <math.h>
using namespace std;
struct query {
int a, b, c;
};
int v[20005];
query q[100005];
int n, m;
int cmmdc(int a, int b) {
if (b == 0) {
return a;
}
return cmmdc(b, a % b);
}
int main() {
freopen("oz.in", "r", stdin);
freopen("oz.out", "w", stdout);
scanf("%d %d", &n, &m);
for (int i = 1; i <= n; ++i) {
v[i] = 1;
}
for (int i = 0; i < m; ++i) {
int a, b, c;
scanf("%d %d %d", &a, &b, &c);
q[i] = { a, b, c };
if (cmmdc(v[a], v[b]) >= c) {
continue;
}
int ca = cmmdc(v[a], c);
int cb = cmmdc(v[b], c);
v[a] *= c / ca;
v[b] *= c / cb;
}
for (int i = 0; i < m; ++i) {
if (cmmdc(v[q[i].a], v[q[i].b]) != q[i].c) {
printf("-1");
return 0;
}
}
for (int i = 1; i <= n; ++i) {
printf("%d ", v[i]);
}
return 0;
}