Pagini recente » Cod sursa (job #291426) | Cod sursa (job #24533) | Cod sursa (job #2318534) | Cod sursa (job #345910) | Cod sursa (job #845144)
Cod sursa(job #845144)
#include <fstream>
#include <vector>
using namespace std;
const char iname[] = "asmax.in";
const char oname[] = "asmax.out";
ifstream fin(iname);
ofstream fout(oname);
int N , i , j , x , y , s1 , s2 , solc , sol_vmax;
int cn[ 16004 ];
vector < int > v[ 16004 ];
int MN = 1 << 30;
int main()
{
fin >> N;
for (i = 1; i <= N; ++i)
fin >> cn[i];
for (i = 1; i <= N-1; ++i)
{
fin >> x >> y;
v[x].push_back(cn[y]);
v[y].push_back(cn[x]);
}
vector < int > :: iterator it;
sol_vmax = MN * (-1);
for (i = 1; i <= N; ++i)
{
MN = 1 << 30;
solc = MN * (-1);
for (j = 0; j < v[i].size(); ++j)
{
s1 += v[i][j];
if (MN > s2)
MN = s2;
if (solc < s1 - MN)
solc = s1 - MN;
s2 += v[i][j];
}
if (solc > sol_vmax)
sol_vmax = solc + cn[i];
s1 = s2 = 0;
}
fout << sol_vmax << '\n';
return 0;
}