Pagini recente » Cod sursa (job #1605772) | Cod sursa (job #3358515) | Cod sursa (job #3358507) | Cod sursa (job #3358509) | Cod sursa (job #3358506)
#include <fstream>
using namespace std;
ifstream fin("oz.in");
ofstream fout("oz.out");
int n, m, v[10001], u[100001], w[100001], x[100001], i, j, d, d2, a, b, ma, r, k;
int main(){
fin >> n >> m;
for (i = 1; i <= n; ++i)
v[i] = 1;
ma = 2000000000;
for (k = 1; k <= m; ++k) {
fin >> i >> j >> d;
u[k] = d, x[k]=v[i], w[k]=v[j];
d2 = d, a = v[i], b = v[j];
//cmmdc v[i] si d, cmmdc v[j] si d cu Euclid si dupa inmultim v[i/j] / cmmdc * d
while (d != 0) r = a % d, a = d, d = r;
//ne trebuie d ul
d = d2;
while (d2 != 0) r = b % d2, b = d2, d2 = r;
v[i] = v[i] / a, v[j] = v[j] / b;
if ((v[i] <= ma / d) && (v[j] <= ma / d)) {
v[i] = v[i] * d;
v[j] = v[j] * d;
}
else {
fout << -1;
return 0;
}
}
for (k = 1; k <= m; ++k) {
a = x[k], b = w[k];
while (b != 0) r = a % b, a = b, b = r;
if (a != u[k]) {
fout << -1;
return 0;
}
}
//afisam vectorul la final daca se afla o solutie
for (i = 1; i <= n; ++i)
fout << v[i] << " ";
return 0;
}