Pagini recente » Cod sursa (job #46443) | Cod sursa (job #2105051) | Cod sursa (job #187733) | Cod sursa (job #2986872) | Cod sursa (job #2486385)
#include <fstream>
using namespace std;
ifstream cin("oz.in");
ofstream cout("oz.out");
long long maxim = 2000000000;
struct reg
{
int nr1 , nr2;
int cmmdc;
}r[100005];
bool lim(long long a , long long MAX)
{
if(a <= MAX)
return true;
return false;
}
int Cmmdc(int a , int b)
{
int r;
while(b)
{
r = a % b;
a = b;
b = r;
}
return a;
}
int Cmmmc(int a , int b)
{
return a * b / Cmmdc(a , b);
}
void Pre(long long v[] , int a)
{
int MAX = v[0] , i;
for(i = 1; i <= MAX; i++)
v[i] = a;
}
long long v[10005];
int main()
{
bool ok = true;
int n , m , t , i;
cin >> n >> m;
v[0] = n;
Pre(v , 1);
for(t = 1; t <= m; t++)
cin >> r[t].nr1 >> r[t].nr2 >> r[t].cmmdc;
for(t = 1; t <= m; t++)
{
v[r[t].nr1] = Cmmmc(v[r[t].nr1] , r[t].cmmdc);
v[r[t].nr2] = Cmmmc(v[r[t].nr2] , r[t].cmmdc);
}
for(t = 1; t <= m; t++)
{
if( Cmmdc(v[r[t].nr1] , v[r[t].nr2]) != r[t].cmmdc )
{ok = false; break;}
if( ! (lim(v[r[t].nr1] , maxim) && lim(v[r[t].nr2] , maxim)) )
{ok = false; break;}
}
if(ok == false)
cout << "-1";
else
if(ok == true)
{
for(i = 1; i <= n; i++)
cout << v[i] << " ";
}
return 0;
}