Pagini recente » Cod sursa (job #2613261) | Cod sursa (job #2791343) | Cod sursa (job #2084772) | Cod sursa (job #1294597) | Cod sursa (job #2806498)
#include <fstream>
#define NMAX 10005
#define LIMIT 2000000000
using namespace std;
ifstream f("oz.in");
ofstream g("oz.out");
int n, m;
int v[NMAX], add[NMAX];
pair <int, int> x[NMAX];
int cmmdc(int a, int b) {
int r = 0;
while (b) {
r = a % b;
a = b;
b = r;
}
return a;
}
int cmmmc(int a, int b) {
if (1ll * a * b / cmmdc(a, b) > LIMIT)
return LIMIT + 1;
return a * b / cmmdc(a, b);
}
int main()
{
f >> n >> m;
for (int i = 1; i <= n; i++)
v[i] = 1;
for (int i = 1; i <= m; i++) {
f >> x[i].first >> x[i].second >> add[i];
v[x[i].first] = cmmmc(v[x[i].first], add[i]);
v[x[i].second] = cmmmc(v[x[i].second], add[i]);
if (v[x[i].first] > LIMIT || v[x[i].second] > LIMIT) {
g << "-1";
return 0;
}
}
for (int i = 1; i <= m; i++) {
if (cmmdc(v[x[i].first], v[x[i].second]) != add[i]) {
g << "-1\n";
return 0;
}
}
for (int i = 1; i <= n; i++) {
g << v[i] << " ";
}
return 0;
}