Pagini recente » Cod sursa (job #1600328) | Cod sursa (job #2372356) | Cod sursa (job #1328824) | Cod sursa (job #2299724) | Cod sursa (job #2990835)
#include <fstream>
#include <vector>
using namespace std;
ifstream in("asmax.in");
ofstream out("asmax.out");
const int N = 16000 , INF_NEG = (-1) * 1e9;
int n , arr[N + 1] , visited[N + 1] , scor[N + 1];
vector<int> v[N + 1];
void asmax(int x){
visited[x] = true;
scor[x] = arr[x];
for(int y = 0 ; y < v[x].size() ; y++){
int j = v[x][y];
if(!visited[j]){
asmax(j);
if(scor[j] > 0){
scor[x] += scor[j];
}
}
}
}
int main(){
in >> n;
for(int i = 1 ; i <= n ; i++){
in >> arr[i];
}
int x , y;
while(in >> x >> y){
v[x].push_back(y);
v[y].push_back(x);
}
int maxi = INF_NEG;
asmax(1);
for(int i = 1 ; i <= n ; i++){
maxi = max(maxi , scor[i]);
}
out << maxi;
}