Pagini recente » Cod sursa (job #1127773) | Cod sursa (job #1478072) | Cod sursa (job #1662816) | Cod sursa (job #927739) | Cod sursa (job #2260624)
#include <fstream>
#include <stdio.h>
FILE *fin=fopen("oz.in","r");
using namespace std;
ofstream fout("oz.out");
long long n,i,j,nrmodif;
long long m,k,d;
long long prime[4650];
long long v[10003];
bool c[44725];
void ciur()
{
long long i,j,nr;
c[1]=1;
for(i=2;i<=211;i++)
if(c[i]==0)
for(j=i*2;j<=44722;j+=i)
c[j]=1;
nr=0;
for(i=2;i<=44722;i++)
if(c[i]==0) prime[++nr]=i;
}
void descompuneX(long long x)
{
long long p=1;
if(v[i]==-1)
{v[i]=1; nrmodif--;}
if(v[j]==-1)
{v[j]=1;nrmodif--;}
while(x>1 && prime[p]<=x/prime[p])
{
if(x%prime[p]==0)
{
long long factor=1;
while(x%prime[p]==0)
{
factor*=prime[p];
x/=prime[p];
}
while(v[i]%factor!=0)
v[i]*=prime[p];
while(v[j]%factor!=0)
v[j]*=prime[p];
}
p++;
}
if(x>1)
{
if(v[i]%x!=0)
v[i]*=x;
if(v[j]%x!=0)
v[j]*=x;
}
}
int main()
{
ciur();
fscanf(fin,"%d%lld",&n,&m);
if(m<n/2){fout<<"-1";return 0;}
nrmodif=n;
for(i=1;i<=n;i++)
v[i]=-1;
for(k=1;k<=m;k++)
{
fscanf(fin,"%d%d%lld",&i,&j,&d);
descompuneX(d);
}
if(nrmodif>0){fout<<"-1";return 0;}
for(k=1;k<=n;k++)
fout<<v[k]<<" ";
return 0;
}