Pagini recente » Cod sursa (job #827472) | Cod sursa (job #2400770) | Cod sursa (job #1898258) | Cod sursa (job #472534) | Cod sursa (job #1449998)
#include <algorithm>
#include <fstream>
#define NMAX 10005
#define MMAX 100005
using namespace std;
ifstream f("oz.in");
ofstream g("oz.out");
struct elem{int x , y , d ;} v[MMAX];
int sol[NMAX] , n , m ;
bool comp(elem a , elem b){
return a.x < b.x || (a.x == b.x && a.y < b.y);
}
int cmmdc(int x , int y){
int r = x % y;
while(y){
r = x % y;
x = y ;
y = r ;
}
return x ;
}
int cmmmc(int x , int y){
return x / cmmdc(x , y) * y ;
}
int main()
{
f >> n >> m ;
for(int i = 1 ; i <= m ; ++i){
f >> v[i].x >> v[i].y >> v[i].d ;
if(v[i].x < v[i].y){
swap(v[i].x , v[i].y);
}
}
sort(v + 1 , v + m + 1 , comp);
for(int i = 1 ; i <= m ; ++i){
if(sol[v[i].x] == 0){
sol[v[i].x] = v[i].d;
}
else{
sol[v[i].x] = cmmmc(sol[v[i].x] , v[i].d);
}
if(sol[v[i].y] == 0){
sol[v[i].y] = v[i].d;
}
else{
sol[v[i].y] = cmmmc(sol[v[i].y] , v[i].d);
}
}
for(int i = 1 ; i <= n ; ++i){
if(sol[i] == 0){
g << -1 ;
return 0;
}
}
for(int i = 1 ; i <= m ; ++i){
if(cmmdc(sol[v[i].x] , sol[v[i].y]) != v[i].d){
g << - 1 ;
return 0 ;
}
}
for(int i = 1 ; i <= n ; ++i){
g << sol[i] << " " ;
}
return 0;
}