Pagini recente » Cod sursa (job #596656) | Cod sursa (job #1292068) | Cod sursa (job #2144889) | Monitorul de evaluare | Cod sursa (job #193840)
Cod sursa(job #193840)
#include <cstdio>
#define VMAX
unsigned long long cmmdc(int x, int y)
{
int r;
do {
r = x % y;
x = y;
y = r;
} while(r);
return x;
}
int cmmmc(int x, int y)
{
unsigned long long rasp = (unsigned long long)x * (unsigned long long)y / cmmdc(x, y);
//return rasp > VMAX ? 0 : (int)rasp;
return (int)rasp;
}
int main()
{
int x[100005], n, m, i, j, d, rasp = 1;
//int nj, ni;
FILE *f1, *f2;
f1 = fopen("oz.in", "r");
f2 = fopen("oz.out", "w");
fscanf(f1, "%d%d", &n, &m);
for (i = 1; i <= n; ++i) x[i] = 1;
for (int t = 1; t <= m; ++t) {
fscanf(f1, "%d%d%d", &i, &j, &d);
x[i] = cmmmc(x[i], d);
x[j] = cmmmc(x[j], d);
if (cmmdc(x[i], x[j]) != (unsigned)d) {
rasp = 0;
break;
}
}
if (rasp == 0) fprintf(f2, "-1\n");
else {
for (i = 1; i <= n; ++i)
fprintf(f2, "%d ", x[i]);
fprintf(f2, "\n");
}
fclose(f1);
fclose(f2);
return 0;
}