Pagini recente » Cod sursa (job #617986) | Cod sursa (job #2096799) | Cod sursa (job #3212394) | Cod sursa (job #2349191) | Cod sursa (job #852702)
Cod sursa(job #852702)
#include <fstream>
#include <vector>
#define NM 16010
using namespace std;
ifstream f("asmax.in");
ofstream g("asmax.out");
int N;
int i,a,b;
vector<int> G[NM];
bool Viz[NM];
int S[NM];
int ANS=-999999999;
void DF (int Node)
{
Viz[Node]=1;
for (vector<int>::iterator it=G[Node].begin(); it!=G[Node].end(); ++it)
if (!Viz[*it])
{
DF(*it);
if (S[*it]>0)
S[Node]+=S[*it];
}
ANS=max(ANS, S[Node]);
}
int main ()
{
f >> N;
for (i=1; i<=N; i++)
f >> S[i];
for (i=1; i<N; i++)
{
f >> a >> b;
G[a].push_back(b);
G[b].push_back(a);
}
DF(1);
g << ANS << '\n';
f.close();
g.close();
return 0;
}