Pagini recente » Cod sursa (job #38862) | Cod sursa (job #566614) | Cod sursa (job #590949) | Cod sursa (job #2139568) | Cod sursa (job #961285)
Cod sursa(job #961285)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in ("oz.in");
ofstream out ("oz.out");
const int MAXM = 100010;
long long Sol[10010];
int X[MAXM], Y[MAXM], D[MAXM];
inline long long gcd (long long A, long long B)
{
long long r = 1;
while (B){
r = A % B;
A = B;
B = r;
}
return A;
}
inline long long lcm (long long A, long long 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;
}