Pagini recente » Cod sursa (job #3005234) | Cod sursa (job #3186745) | Cod sursa (job #2339799) | Cod sursa (job #2605298) | Cod sursa (job #3189118)
#include <stdio.h>
#include <stdlib.h>
#define MAXN 10000
#define MAXM 100000
#define INFINIT 2000000000
long long v[MAXN];
int mr[3][MAXM];
long long cmmmc(int i, int b) {
long long a;
int r, x;
x = b;
a = v[i];
while (b > 0) {
r = a % b;
a = b;
b = r;
}
return v[i] * x / a;
}
int cmmdc(int a, int b) {
int r;
while (b > 0) {
r = a % b;
a = b;
b = r;
}
return a;
}
int main()
{
FILE *fin, *fout;
int n, m, i, d, x, y;
fin = fopen("oz.in", "r");
fscanf(fin, "%d%d", &n, &m);
for (i = 0; i < n; i++) {
v[i] = 1;
}
for (i = 0; i < m; i++) {
fscanf(fin, "%d%d%d", &x, &y, &d);
x--;
y--;
mr[0][i] = x;
mr[1][i] = y;
mr[2][i] = d;
if (v[x] <= INFINIT) {
v[x] = cmmmc(x, d);
}
if (v[y] <= INFINIT) {
v[y] = cmmmc(y, d);
}
}
fclose(fin);
i = 0;
while (i < m && cmmdc(v[mr[0][i]], v[mr[1][i]]) == mr[2][i]) {
i++;
}
fout = fopen("oz.out", "w");
if (i < m) {
fprintf(fout, "-1\n");
} else {
for (i = 0; i < n; i++) {
fprintf(fout, "%lld ", v[i]);
}
}
fclose(fout);
return 0;
}