Cod sursa(job #569273)
#include <iostream>
#include <fstream>
using namespace std;
const char iname[] = "oz.in";
const char oname[] = "oz.out";
ifstream fin(iname);
ofstream fout(oname);
int a, b, d, n, m, i;
int v[10005];
struct intrebare
{
int x, y, ceva;
}T[100005];
int cmmdc(int a, int b)
{
if(!b)
return a;
else
return cmmdc(b, a % b);
}
int main()
{
fin >> n >> m;
for(i = 1; i <= n; i ++)
v[i] = 1;
for(i = 1; i <= m; i ++)
{
fin >> a >> b >> d;
T[i].x = a, T[i].y = b, T[i].ceva = d;
v[a] = v[a] * d / cmmdc(v[a], d);
v[b] = v[b] * d / cmmdc(v[b], d);
}
for(i = 1; i <= m; i ++)
{
if(cmmdc(v[T[i].x], v[T[i].y]) != T[i].ceva)
{
fout << "-1\n";
exit(0);
}
}
for(i = 1; i <= n; i ++)
fout << v[i] << " ";
return 0;
}