Pagini recente » Monitorul de evaluare | Cod sursa (job #2015874) | Atasamentele paginii Clasament concurs_y | Diferente pentru runda/temahashuri_9_17_10 intre reviziile 1 si 3 | Cod sursa (job #469968)
Cod sursa(job #469968)
# include <fstream>
# include <vector>
# include <algorithm>
# define l 2000000000
using namespace std;
struct nod {
long long int i,j,c;
nod (){}
nod(int I, int J, int C){
i=I;j=J;c=C;}
};
long long int n, m, v[10003];
vector<nod>V;
int cmmdc (long long int a, long long int b)
{
long long int r;
do{
r=a%b;
a=b;
b=r;
}
while(r);
return a;
}
int verif ()
{
for(vector<nod>::iterator I=V.begin();I<V.end();++I)
if (cmmdc(v[I->i], v[I->j])!=I->c)
return 0;
return 1;
}
int main ()
{
int i, j, c;
ifstream fin ("oz.in");
ofstream fout ("oz.out");
fin>>n>>m;
for(int i=1;i<=n;++i)
v[i]=1;
for(;m--;)
{
fin>>i>>j>>c;
V.push_back(nod(i, j, c));
v[i]=v[i]/cmmdc(c, v[i])*c;
v[j]=v[j]/cmmdc(c, v[j])*c;
if (v[i]>l || v[j]>l)
{
fout<<"-1";
return 0;
}
}
if(!verif())
fout<<"-1";
else
for(int i=1;i<=n;++i)
fout<<v[i]<<" ";
return 0;
}