Pagini recente » Cod sursa (job #1943263) | Cod sursa (job #2035456) | Cod sursa (job #2717839) | Cod sursa (job #1240727) | Cod sursa (job #2260637)
#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;
}
int 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;
}
if(v[i]> 2000000000) return 0;
else if(v[j]> 2000000000) return 0;
else return 1;
}
int main()
{
ciur();
fscanf(fin,"%lld%lld",&n,&m);
if(m<n/2)
{
fout<<"-1";
return 0;
}
nrmodif=n;
for(i=1; i<=n; i++)
v[i]=-1;
/*i=2;j=4;
v[i]=2; v[j]=-1;
descompuneX(17);
for(k=1;k<=n;k++)
{
fout<<v[k]<<" ";
}*/
for(k=1; k<=m; k++)
{
fscanf(fin,"%lld%lld%lld",&i,&j,&d);
descompuneX(d);
if(descompuneX(d)==0){fout<<"-1";return 0;}
for(int l=1;l<=n;l++)
fout<<v[l]<<" ";
fout<<"\n";
}
if(nrmodif>0)
{
fout<<"-1";
return 0;
}
for(k=1; k<=n; k++)
fout<<v[k]<<" ";
return 0;
}