Pagini recente » Cod sursa (job #2160503) | Cod sursa (job #144470) | Cod sursa (job #1614769) | Cod sursa (job #1665883) | Cod sursa (job #2105842)
#include <cstdio>
const int MAXN = 1e4;
const int MAXM = 1e5;
struct Oper {
int x, y, d;
};
int v[MAXN + 1];
Oper o[MAXM];
inline int gcd(int a, int b) {
return b ? gcd(b, a % b) : a;
}
inline int lcm(int a, int b) {
return a * b / gcd(a, b);
}
int main() {
int n, m, i;
bool flag;
FILE *f = fopen("oz.in", "r");
fscanf(f, "%d%d", &n, &m);
for (int i = 1; i <= n; ++i) {
v[i] = 1;
}
for (int i = 0; i < m; ++i) {
fscanf(f, "%d%d%d", &o[i].x, &o[i].y, &o[i].d);
v[o[i].x] = lcm(v[o[i].x], o[i].d);
v[o[i].y] = lcm(v[o[i].y], o[i].d);
}
fclose(f);
flag = i = 0;
while (i < m && !flag) {
if (gcd(v[o[i].x], v[o[i].y]) != o[i].d) {
flag = 1;
}
++i;
}
f = fopen("oz.out", "w");
if (flag) {
fprintf(f, "-1\n");
} else {
for (int i = 1; i <= n; ++i) {
fprintf(f, "%d ", v[i]);
}
}
fclose(f);
return 0;
}