Pagini recente » Cod sursa (job #2416917) | Cod sursa (job #3275084) | Cod sursa (job #66566) | Cod sursa (job #2583552) | Cod sursa (job #2806507)
#include <fstream>
#define NMAX 10005
#define MMAX 100005
#define LIMIT 2000000000
using namespace std;
ifstream f("oz.in");
ofstream g("oz.out");
long long n, m;
long long v[NMAX], add[MMAX];
pair <long long, long long> x[MMAX];
long long cmmdc(long long a, long long b) {
long long r = 0;
while (b) {
r = a % b;
a = b;
b = r;
}
return a;
}
long long cmmmc(long long a, long long b) {
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;
}