Pagini recente » Cod sursa (job #2800381) | Cod sursa (job #2033042) | Cod sursa (job #2525487) | Cod sursa (job #549698) | Cod sursa (job #484572)
Cod sursa(job #484572)
#include <fstream>
using namespace std;
const char InFile[]="oz.in";
const char OutFile[]="oz.out";
const int MaxN=10010;
const int MaxM=100010*3;
typedef unsigned long long uint64;
ifstream fin(InFile);
ofstream fout(OutFile);
uint64 i,j,d,v[MaxN];
int N,M;
int index_buffer[MaxM]; //imi aduce aminte de directx :))
uint64 cmmdc(uint64 a, uint64 b)
{
uint64 r=a%b;
while(r)
{
a=b;
b=r;
r=a%b;
}
return b;
}
uint64 cmmmc(uint64 a, uint64 b)
{
return a*b/cmmdc(a,b);
}
int main()
{
fin>>N>>M;
for(register int i=1;i<=N;++i)
{
v[i]=1;
}
for(register int k=0;k<M;++k)
{
fin>>i>>j>>d;
index_buffer[k*3]=i;
index_buffer[k*3+1]=j;
index_buffer[k*3+2]=d;
v[i]=cmmmc(v[i],d);
v[j]=cmmmc(v[j],d);
}
fin.close();
bool good=true;
for(register int k=0;k<M;++k)
{
i=index_buffer[k*3];
j=index_buffer[k*3+1];
d=index_buffer[k*3+2];
if(cmmdc(v[i],v[j])!=d)
{
good=false;
break;
}
}
if(good)
{
for(register int i=1;i<=N;++i)
{
if(v[i]>2000000000)
{
good=false;
break;
}
}
}
if(good)
{
for(register int i=1;i<=N;++i)
{
fout<<v[i]<<" ";
}
}
else
{
fout<<"-1";
}
fout.close();
return 0;
}