Pagini recente » Cod sursa (job #760418) | Cod sursa (job #2344984) | Cod sursa (job #337594) | Cod sursa (job #2587858) | Cod sursa (job #715189)
Cod sursa(job #715189)
#include <fstream>
#include <vector>
#define NMAx 16384
#define oo (1<<30)
using namespace std;
vector <int> ARB[NMAx];
int Sol=-oo,N,Best[NMAx];
void DFS(int nod,int tata) {
int vecin;
for(int i=0;i<ARB[nod].size();i++) {
vecin=ARB[nod][i];
if(vecin==tata)
continue;
DFS(vecin,nod);
if(Best[vecin]>0)
Best[nod]+=Best[vecin];
}
}
void citire() {
int i,x,y;
ifstream in("asmax.in");
in>>N;
for(i=1;i<=N;i++)
in>>Best[i];
for(i=1;i<N;i++) {
in>>x>>y;
ARB[x].push_back(y);
ARB[y].push_back(x);
}
in.close();
}
void afis() {
ofstream out("asmax.out");
for(int i=1;i<=N;i++)
Sol=max(Sol,Best[i]);
out<<Sol<<'\n';
out.close();
}
int main() {
citire();
DFS(1,0);
afis();
return 0;
}