Pagini recente » Cod sursa (job #2118227) | Cod sursa (job #1753035) | Borderou de evaluare (job #156738) | Cod sursa (job #727787) | Cod sursa (job #2559218)
#include <bits/stdc++.h>
#define DAU ios::sync_with_stdio(false); fin.tie(0); fout.tie(0);
#define PLEC fin.close(); fout.close(); return 0;
#define int long long
using namespace std;
ifstream fin("oz.in");
ofstream fout("oz.out");
queue<tuple<int, int, int>> Q;
int n, m, a, b, d, r;
vector<int> v;
inline int cmmdc(int a, int b)
{
if (a > b)
swap(a, b);
if (a == 0)
return b;
while (b != 0)
{
r = a % b;
a = b;
b = r;
}
return a;
}
inline int cmmmc(int a, int b)
{
if (a > b)
swap(a, b);
if (a == 0)
return b;
r = a * b / cmmdc(a, b);
return r;
}
main()
{
DAU
fin >> n >> m;
v = vector<int>(n + 1);
for (int i = 1; i <= m; ++i)
{
fin >> a >> b >> d;
v[a] = cmmmc(v[a], d);
v[b] = cmmmc(v[b], d);
Q.emplace(a, b, d);
}
while (!Q.empty())
{
tie(a, b, d) = Q.front();
Q.pop();
if (cmmdc(v[a], v[b]) != d) {
fout << -1;
PLEC
}
}
for (int i = 1; i <= n; ++i)
fout << v[i] << ' ';
PLEC
}