Pagini recente » Cod sursa (job #1757592) | Cod sursa (job #2049670) | Cod sursa (job #1643399) | Cod sursa (job #1486719) | Cod sursa (job #3147406)
using namespace std;
#include<iostream>
#include<fstream>
#include<vector>
#include<climits>
ifstream fin("asmax.in");
ofstream fout("asmax.out");
int n;
vector< vector<int> > muchii;
int viz[16001];
int dp[16001];
int maxim = INT_MIN;
void dfs(int k) {
viz[k] = 1;
for (int i = 0; i<muchii[k].size(); i++) {
int nod = muchii[k][i];
if (viz[nod] == 0) {
dfs(nod);
dp[k] += dp[nod];
}
}
cout << k << " " << dp[k] << endl;
maxim = max(maxim, dp[k]);
if (dp[k] < 0) {
dp[k] = 0;
}
}
int main() {
fin >> n;
for (int i = 1; i<=n; i++) {
fin >> dp[i];
maxim = max(maxim, dp[i]);
}
muchii.resize(n+1);
for (int i = 1; i<=n-1; i++) {
int a, b;
fin >> a >> b;
muchii[a].push_back(b);
muchii[b].push_back(a);
}
dfs(1);
/*int maxim = INT_MIN;
for (int i = 1; i<=n; i++) {
if (dp[i] > maxim) {
maxim = dp[i];
}
}
*/
fout << maxim;
return 0;
}