Pagini recente » Cod sursa (job #2236965) | Cod sursa (job #2052505) | Cod sursa (job #630609) | Cod sursa (job #1014054) | Cod sursa (job #165108)
Cod sursa(job #165108)
#include <cstdio>
const int maxn = 10001;
const int maxm = 100000;
FILE *in = fopen("oz.in","r"), *out = fopen("oz.out","w");
struct info
{
int i, j, d;
};
int n, m;
int a[maxn];
info b[maxm];
int cmmdc(int a, int b)
{
if ( !b )
return a;
return cmmdc(b, a % b);
}
int cmmmc(int a, int b)
{
return (a * b) / cmmdc(a, b);
}
void read()
{
fscanf(in, "%d %d", &n, &m);
for ( int i = 1; i <= n; ++i )
a[i] = 1;
for ( int i = 1; i <= m; ++i )
{
fscanf(in, "%d %d %d", &b[i].i, &b[i].j, &b[i].d);
a[ b[i].i ] = cmmmc(a[ b[i].i ], b[i].d);
a[ b[i].j ] = cmmmc(a[ b[i].j ], b[i].d);
}
}
void go()
{
for ( int i = 1; i <= m; ++i )
if ( cmmdc( a[ b[i].i ], a[ b[i].j ] ) != b[i].d )
{
fprintf(out, "%d\n", -1);
return;
}
for ( int i = 1; i <= n; ++i )
fprintf(out, "%d ", a[i]);
}
int main()
{
read();
go();
return 0;
}