Pagini recente » Cod sursa (job #2626164) | Borderou de evaluare (job #1569295) | Cod sursa (job #528165) | Cod sursa (job #771939) | Cod sursa (job #2657047)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("oz.in");
ofstream out("oz.out");
bool flag;
int cmmmc(int a, int b)
{
long long r, p;
p=(long long )a*b;
flag = 0;
while(b)
{
r=(long long )a%b;
a=b;
b=r;
}
r = p / a;
if( r > 2000000000 ){
r = 1;
flag = 1;
}
return r;
}
int cmmdc(int a, int b)
{
int r;
while(b)
{
r=a%b;
a=b;
b=r;
}
return a;
}
int trip[100000][3];
int v[10000];
int main()
{
int n, m, k;
in>>n>>m;
for( k = 0; k < n; k++ ){
v[k] = 1;
}
for( k = 0; k < m; k++ ){
in>>trip[k][0]>>trip[k][1]>>trip[k][2];
if( flag == 1 )
break;
if(v[ trip[k][0] - 1 ] % trip[k][2] != 0 ){
v[ trip[k][0] - 1 ] = cmmmc(v[ trip[k][0] - 1 ], trip[k][2]);
}
if(v[ trip[k][1] - 1 ] % trip[k][2] != 0 ){
v[ trip[k][1] - 1 ] = cmmmc(v[ trip[k][1] - 1 ], trip[k][2]);
}
}
for( k = 0; k < m; k++ ){
if( cmmdc(v[ trip[k][0] - 1 ], v[ trip[k][1] - 1 ]) != trip[k][2] )
k = m + 2;
}
if( k == m + 2 || flag == 1 )
out<<"-1";
else{
for( k = 0; k < n; k++ ){
out<<v[k]<<" ";
}
}
return 0;
}