Pagini recente » Rating Sebastian Georgescu Andrei (Sebi_geo) | Cod sursa (job #2450647) | Cod sursa (job #883879) | Cod sursa (job #436303) | Cod sursa (job #1135394)
#include <cstdio>
#define Nmax 10005
#define Mmax 100005
using namespace std;
int N,M,v[Nmax];
struct oper
{
int i,j,d;
};
oper op[Mmax];
inline int CMMDC(int x, int y)
{
int r=x%y;
while(r)
{
x=y; y=r; r=x%y;
}
return y;
}
inline int CMMMC(int x, int y)
{
int d=CMMDC(x,y);
long long sol;
sol=(1LL*x*y)/d;
if(sol>2000000000)
return -1;
return sol;
}
int main()
{
int i,t,ok=1;
freopen ("oz.in","r",stdin);
freopen ("oz.out","w",stdout);
scanf("%d%d", &N,&M);
for(i=1;i<=N;++i)
v[i]=1;
for(t=1;t<=M;++t)
{
scanf("%d%d%d", &op[t].i,&op[t].j,&op[t].d);
v[op[t].i]=CMMMC(v[op[t].i],op[t].d);
v[op[t].j]=CMMMC(v[op[t].j],op[t].d);
if(v[op[t].i]==-1 || v[op[t].j]==-1)
{
ok=0;
break;
}
}
for(t=1;t<=M;++t)
if(CMMDC(v[op[t].i],v[op[t].j])!=op[t].d)
{
ok=0;
break;
}
if(!ok)
printf("-1\n");
else
{
for(i=1;i<=N;++i)
printf("%d ", v[i]);
printf("\n");
}
return 0;
}