Pagini recente » Cod sursa (job #2487609) | Cod sursa (job #379918) | Cod sursa (job #1176565) | Cod sursa (job #1867700) | Cod sursa (job #2669010)
#include <stdio.h>
#define MMAX 100000
#define NMAX 10000
struct triplete{
int poz1, poz2, div;
}v[MMAX];
int numere[NMAX];
int cmmdc( int a, int b ) {
int r;
while ( b != 0 ) {
r = a % b;
a = b;
b = r;
}
return a;
}
int main()
{
FILE *fin, *fout;
int n, m, i, ok;
fin = fopen( "oz.in", "r" );
fout = fopen( "oz.out", "w" );
fscanf( fin, "%d%d", &n, &m );
for ( i = 0; i < n; i++ ) {
numere[i] = 1;
}
for ( i = 0; i < m; i++ ) {
fscanf( fin, "%d%d%d", &v[i].poz1, &v[i].poz2, &v[i].div );
numere[v[i].poz1 - 1] *= v[i].div / cmmdc( numere[v[i].poz1 - 1], v[i].div );
numere[v[i].poz2 - 1] *= v[i].div / cmmdc( numere[v[i].poz2 - 1], v[i].div );
}
ok = 0;
for ( i = 0; i < m; i++ ) {
if ( cmmdc( numere[v[i].poz1 - 1], numere[v[i].poz2 - 1] ) != v[i].div ) {
ok = 1;
}
}
if ( ok == 0 ) {
for ( i = 0; i < n; i++ ) {
fprintf( fout, "%d ", numere[i] );
}
} else {
fprintf( fout, "-1" );
}
fclose( fin );
fclose( fout );
return 0;
}