Pagini recente » Cod sursa (job #1463899) | Cod sursa (job #2465746) | Cod sursa (job #1628944) | Cod sursa (job #483772) | Cod sursa (job #1902287)
#include <fstream>
#include <iostream>
#include <algorithm>
#include <deque>
#include <vector>
#define inf 0x3f3f3f3f
using namespace std;
int n,i,maxi,x,y,v[16005],use[16005];
vector <int> graf[16005];
void DFS(int x)
{
int j;
use[x]=1;
for(j=0; j<graf[x].size(); j++)
{
if(!use[graf[x][j]])
{
DFS(graf[x][j]);
v[x]=max(v[x],v[graf[x][j]]+v[x]);
}
}
}
int main()
{
ifstream f("asmax.in");
ofstream g("asmax.out");
maxi=-inf;
f>>n;
for(i=1; i<=n; i++) f>>v[i];
for(i=1; i<n; i++)
{
f>>x>>y;
graf[x].push_back(y);
graf[y].push_back(x);
}
DFS(1);
for(i=1; i<=n; i++)
if(v[i]>maxi) maxi=v[i];
g<<maxi<<'\n';
f.close(); g.close();
return 0;
}