Pagini recente » Cod sursa (job #430255) | Cod sursa (job #800669) | Cod sursa (job #3187214) | Cod sursa (job #387317) | Cod sursa (job #947495)
Cod sursa(job #947495)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in ("oz.in");
ofstream out ("oz.out");
const int MAXM = 100010;
int Sol[10010];
int X[MAXM], Y[MAXM], D[MAXM];
inline int gcd (int A, int B)
{
int r = 1;
while (B){
r = A % B;
A = B;
B = r;
}
return A;
}
inline int lcm (int A, int B)
{
return A * B / gcd (A, B);
}
int main()
{
int N, M, i;
bool ok = 1;
in >> N >> M;
for (i = 1; i <= N; i ++)
Sol[i] = 1;
for (i = 1; i <= M; i ++){
in >> X[i] >> Y[i] >> D[i];
Sol[X[i]] = lcm (Sol[X[i]], D[i]);
Sol[Y[i]] = lcm (Sol[Y[i]], D[i]);
}
for (i = 1; i <= M; i ++)
if (gcd (Sol[X[i]], Sol[Y[i]]) != D[i])
ok = 0;
if (!ok)
out << -1;
else{
for (i = 1; i <= N; i ++)
out << Sol[i] << " ";
}
return 0;
}