Pagini recente » Cod sursa (job #94974) | Cod sursa (job #2230087) | Cod sursa (job #72651) | Cod sursa (job #2986302) | Cod sursa (job #2037241)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream in("oz.in");
ofstream out("oz.out");
const int maxn = 10005;
int v[maxn];
struct str
{
int a, b, c;
};
vector <str> query;
int cmmdc(int a, int b)
{
int r = a % b;
while(r > 0)
{
a = b;
b = r;
r = a % b;
}
return b;
}
inline int cmmmc(int a, int b)
{
return 1LL * a * b / cmmdc(a, b);
}
inline str make_str(int p, int q, int r)
{
str rez;
rez.a = p;
rez.b = q;
rez.c = r;
return rez;
}
int main()
{
int n, m;
in >> n >> m;
for(int i = 1; i <= n; i++)
v[i] = 1;
for(int i = 1; i <= m; i++)
{
int x, y, p;
in >> x >> y >> p;
query.push_back(make_str(x, y, p));
v[x] = cmmmc(v[x], p);
v[y] = cmmmc(v[y], p);
}
for(auto it : query)
{
if(cmmdc(v[it.a], v[it.b]) != it.c)
{
out << -1 << "\n";
return 0;
}
}
for(int i = 1; i <= n; i++)
out << v[i] << " ";
out << "\n";
return 0;
}