Pagini recente » Cod sursa (job #2260020) | Cod sursa (job #2036960) | Cod sursa (job #2836585) | Cod sursa (job #2065606) | Cod sursa (job #285090)
Cod sursa(job #285090)
#include<stdio.h>
#define IN "oz.in","r",stdin
#define OUT "oz.out","w",stdout
int n,m;
int v[10020],poz1[100020],poz2[100020],divz[100020];
int gcd(int a, int b)
{
return (!b ? a : gcd(b, a%b));
}
void citire()
{
freopen(IN);
scanf("%d%d",&n,&m);
for(int i=1;i<=m;++i)
scanf("%d%d%d",&poz1[i],&poz2[i],&divz[i]);
}
void solve()
{
for(int i=1;i<=n;++i)
v[i]=1;
for(int i=1;i<=m;++i)
{
v[poz1[i]]=(long long)v[poz1[i]]*divz[i]/gcd(v[poz1[i]],divz[i]);
v[poz2[i]]=(long long)v[poz2[i]]*divz[i]/gcd(v[poz2[i]],divz[i]);
}
}
bool verific()
{
for(int i=1;i<=m;++i)
if(gcd(v[poz1[i]],v[poz2[i]])!=divz[i])
return false;
return true;
}
void afisare()
{
freopen(OUT);
if(verific()==true)
for(int i=1;i<=n;++i)
printf("%d ",v[i]);
else printf("-1");
}
int main()
{
citire();
solve();
afisare();
return 0;
}