Pagini recente » Cod sursa (job #1475978) | Istoria paginii runda/tractoare2/clasament | Cod sursa (job #1473362) | Cod sursa (job #3134925) | Cod sursa (job #2655896)
//Mihai Priboi
#include <stdio.h>
#include <stdlib.h>
int v[10000 + 1], query[3][100000];
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, incorect;
long long cmmmc1, cmmmc2;
fin = fopen( "oz.in", "r" );
fscanf( fin, "%d%d", &n, &m );
// pregatire vector
for( i = 1; i <= n; i++ )
v[i] = 1;
//
incorect = 0;
for( i = 0; i < m; i++ ) {
fscanf( fin, "%d%d%d", &query[0][i], &query[1][i], &query[2][i] );
cmmmc1 = cmmdc(v[query[0][i]], query[2][i]);
cmmmc1 = (long long)v[query[0][i]] * query[2][i] / cmmmc1;
cmmmc2 = cmmdc(v[query[1][i]], query[2][i]);
cmmmc2 = (long long)v[query[1][i]] * query[2][i] / cmmmc2;
if( cmmmc1 > 2000000000 || cmmmc2 > 2000000000 ) {
incorect = 1;
cmmmc1 = cmmmc2 = 1;
}
v[query[0][i]] = cmmmc1;
v[query[1][i]] = cmmmc2;
}
fclose( fin );
// verificare daca e corect
for( i = 0; i < m; i++ )
if( cmmdc(v[query[0][i]], v[query[1][i]]) != query[2][i] )
incorect = 1;
fout = fopen( "oz.out", "w" );
if( incorect == 1 )
fprintf( fout, "-1" );
else
for( i = 1; i <= n; i++ )
fprintf( fout, "%d ", v[i] );
fclose( fout );
return 0;
}