Pagini recente » Borderou de evaluare (job #117777) | Cod sursa (job #641802) | Cod sursa (job #663581) | Cod sursa (job #250605) | Cod sursa (job #831088)
Cod sursa(job #831088)
#include<fstream>
#include<vector>
using namespace std;
ifstream in("asmax.in");
ofstream out("asmax.out");
vector <int> v[16001];
int sum[16001],ver[16001];
int rez;
void dfs(int nod)
{
for(int i=1;i<v[nod].size();i++)
{
if(!sum[v[nod][i]])
dfs(v[nod][i]);
if(sum[v[nod][i]]>0)
rez+=sum[v[nod][i]];
}
sum[nod]+=ver[nod];
}
int main()
{
int n,i,a,b;
in>>n;
for(i=1;i<=n;i++)
in>>ver[i];
for(i=1;i<n;i++)
{
in>>a>>b;
v[a].push_back(b);
v[b].push_back(a);
}
dfs(1);
out<<rez<<"\n";
}