Pagini recente » Monitorul de evaluare | Cod sursa (job #164229)
Cod sursa(job #164229)
//Preoni 2008 Runda finala Clasele 5-8
#include <stdio.h>
#define INPUT "oz.in"
#define OUTPUT "oz.out"
#define NMAX 10001
#define MMAX 100001
int N, M;
int v[NMAX];
int ii[MMAX], jj[MMAX], d[MMAX];
inline int cmmdc(int A, int B)
{
while(A && B)
if(A > B) A %= B;
else B %= A;
if(A) return A;
return B;
}
inline int cmmmc(int A, int B)
{
return (int)((long long)A*B/cmmdc(A, B));
}
int main()
{
freopen(INPUT, "r", stdin);
freopen(OUTPUT, "w", stdout);
scanf("%d %d", &N, &M);
int i;
for(i = 1; i <= N; ++i) v[i] = 1;
for(i = 1; i <= M; ++i)
{
scanf("%d %d %d", &ii[i], &jj[i], &d[i]);
v[ii[i]] = cmmmc(v[ii[i]], d[i]);
v[jj[i]] = cmmmc(v[jj[i]], d[i]);
}
int ok = 1;
for(i = 1; i <= M && ok; ++i)
if(cmmdc(v[ii[i]], v[jj[i]]) != d[i]) ok = 0;
if(ok)
{
for(i = 1; i < N; ++i)
printf("%d ", v[i]);
printf("%d\n", v[N]);
}
else printf("-1\n");
return 0;
}