Pagini recente » Cod sursa (job #3155257) | Cod sursa (job #633373) | Cod sursa (job #373620) | Cod sursa (job #2404240) | Cod sursa (job #414903)
Cod sursa(job #414903)
# include <fstream>
# include <iostream>
# include <vector>
# include <algorithm>
using namespace std;
int n;
vector<int> V, G[16005];
int v[16003], sol=-1000000000;
void read ()
{
ifstream fin ("asmax.in");
fin>>n;
V.push_back(0);
for (int i=1;i<=n;i++)
{
int x;
fin>>x;
V.push_back(x);
}
int x , y;
for(int i=1;i<n;i++)
{
fin>>x>>y;
G[x].push_back(y);
G[y].push_back(x);
}
}
void DFS (int k)
{
v[k]=1;
for (vector <int>::iterator I=G[k].begin();I<G[k].end();++I)
if (!v[*I])
{
DFS(*I);
if (V[k]<V[*I]+V[k])
V[k]=V[*I]+V[k];
if (V[k]>sol)
sol=V[k];
}
if (G[k].size()==1)
if (V[k]>sol)
sol=V[k];
}
int main()
{
read ();
DFS(1);
ofstream fout ("asmax.out");
fout<<sol;
return 0;
}