#include <iostream>
#include <vector>
#include <cstring>
using namespace std;
long long n;
vector<long long> g[100005];
long long a[100005];
long long dr[100005];
bool pos[100005];
void dfs(long long x, long long dr1)
{
try
{
pos[x]=1;
long long k;
dr[x]=dr1;
for (k=0; k<g[x].size(); k++) if (pos[g[x][k]]==0)
{
dfs(g[x][k],dr1*(g[x].size()-1));
a[x]+=a[g[x][k]];
}
}
catch(exception &e)
{
cout<<"dfs1"<<endl;
}
}
long long gcd(long long a, long long b)
{
try
{
if (b==0) return a;
else return gcd(b,a%b);
}
catch(exception &e)
{
cout<<"jovan se otkazuva od programiranje"<<endl;
}
}
long long lcm(long long a, long long b)
{
try
{
return (a*b)/gcd(a,b);
}
catch(exception &e)
{
cout<<"jovan se otkazuva od programiranje"<<endl;
}
}
int main()
{
try
{
long long k,i,j,rez;
cin>>n;
for (k=1; k<=n; k++) cin>>a[k];
try
{
for (k=0; k<n-1; k++)
{
cin>>i>>j;
g[i].push_back(j);
g[j].push_back(i);
}
}
catch(exception& e)
{
cout<<'a'<<endl;
}
try
{
g[1].push_back(1);
memset(pos,0,sizeof(pos));
}
catch(exception& e)
{
cout<<"mem"<<endl;
}
try
{
dfs(1,1);
}
catch(exception& e)
{
cout<<"dfs"<<endl;
}
rez=99999999999999999L;
try
{
for (k=1; k<=n; k++)
{
rez=min(rez,a[k]*dr[k]);
}
}
catch(exception& e)
{
cout<<"min"<<endl;
}
long long l=1;
try
{
for (k=2; k<=n; k++) l=lcm(l,dr[k]);
}
catch(exception& e)
{
cout<<'c'<<endl;
}
//for (k=1;k<=n;k++) cout<<dr[k]<<endl;
try
{
rez=rez-(rez%l);
cout<<a[1]-rez<<endl;
}
catch(exception& e)
{
cout<<"tuka nema"<<endl;
}
return 0;
}
catch(exception& e)
{
cout<<"tuka ako nema "<<endl;
}
}
My whole code is in try-catch blocks, and still I get a runtime error. I can't figure out why... Can someone help me?








