Pagini recente » Cod sursa (job #762629) | Cod sursa (job #1456573) | Cod sursa (job #2906348) | Cod sursa (job #1072105) | Cod sursa (job #1498135)
#include<fstream>
#include<vector>
using namespace std;
ifstream in("asmax.in");
ofstream out("asmax.out");
#define MAX 16001
int S[MAX], V[MAX],N,viz[MAX];
vector<int> node[MAX];
void DFS(int i)
{
S[i] = V[i];
for (int j = 0;j < node[i].size();++j)
{
if (!viz[node[i][j]])
{
viz[node[i][j]] = 1;
DFS(node[i][j]);
if (S[node[i][j]]>0)
{
S[i] += S[node[i][j]];
}
}
}
}
int main()
{
int N;
in >> N;
for (int i = 1;i <= N;++i)
in >> V[i];
int a, b;
while (in >> a && in >> b)
node[a].push_back(b),node[b].push_back(a);
viz[1] = 1;
DFS(1);
int max = 1 << 31;
for (int i = 1;i <= N;++i)
if (S[i] > max)
max = S[i];
out << max;
return 0;
}