Cod sursa(job #2690051)
Utilizator | Data | 22 decembrie 2020 20:37:37 | |
---|---|---|---|
Problema | Oz | Scor | 30 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 2.24 kb |
#include <fstream>
using namespace std;
long long cmmdc[10005],v[10005];
int f[10005];
int h1[100005],h2[100005],h3[100005];
int main()
{
ifstream cin("oz.in");
ofstream cout("oz.out");
long long n,m,a,b,c,ok=0,l1,l2,l3,lim=2000000000;
cin>>n>>m;
for(int i=1; i<=n; i++)
{
cmmdc[i]=1;
v[i]=1;
}
for(int i=1; i<=m; i++)
{
cin>>a>>b>>c;
h1[i]=a;
h2[i]=b;
h3[i]=c;
f[a]++;
f[b]++;
if(f[a]==1)
{
cmmdc[a]=c;
v[a]=c;
}
else
{
if(v[a]%c!=0)
{
l1=cmmdc[a];
l2=c;
while(l2!=0)
{
l3=l1%l2;
l1=l2;
l2=l3;
}
cmmdc[a]=l1;
v[a]=1LL*v[a]*c;
v[a]/=l1;
if(v[a]>lim)
{
ok=1;
break;
}
}
}
if(f[b]==1)
{
cmmdc[b]=c;
v[b]=c;
}
else
{
if(v[b]%c!=0)
{
l1=cmmdc[b];
l2=c;
while(l2!=0)
{
l3=l1%l2;
l1=l2;
l2=l3;
}
cmmdc[b]=l1;
v[b]=1LL*v[b]*c;
v[b]/=l1;
if(v[b]>lim)
{
ok=1;
break;
}
}
}
}
if(ok==0)
{
for(int i=1; i<=m; i++)
{
l1=v[h1[i]];
l2=v[h2[i]];
while(l2!=0)
{
l3=l1%l2;
l1=l2;
l2=l3;
}
if(l1!=h3[i])
{
ok=1;
break;
}
}
}
if(ok==0)
{
for(int i=1; i<=n; i++)
{
cout<<v[i]<<" ";
}
cout<<'\n';
}
else
{
cout<<"-1"<<'\n';
}
return 0;
}