Pagini recente » Cod sursa (job #2585087) | Cod sursa (job #961531) | Statistici jean valjean (abcdef) | Istoria paginii utilizator/radu684 | Cod sursa (job #2910588)
#include <stdio.h>
#include <vector>
#include <tuple>
#include <algorithm>
#define int long long
using namespace std;
FILE *fin, *fout;
const int N = 1e4;
int v[N + 1];
int n, q, a, b, d;
vector <tuple <int, int, int> > vv;
signed main()
{
fin = fopen ("oz.in", "r");
fout = fopen ("oz.out", "w");
fscanf(fin, "%d%d", &n, &q);
for (int i = 1; i <= n; ++i)
v[i] = 1;
for (; q; --q)
{
fscanf(fin, "%d%d%d", &a, &b, &d);
int cmmd1, cmmd2;
cmmd1 = __gcd(v[a], d);
cmmd2 = __gcd(v[b], d);
vv.push_back(make_tuple(a, b, d));
v[a] *= d / cmmd1;
v[b] *= d / cmmd2;
}
bool ok = true;
for (auto it : vv)
if (__gcd(v[get<0>(it)], v[get<1>(it)]) != get<2>(it))
{
ok = false;
break;
}
if (ok)
for (int i = 1; i <= n; ++i)
fprintf(fout, "%d ", v[i]);
else
fprintf(fout, "-1\n");
return 0;
}