Pagini recente » Cod sursa (job #2358145) | Cod sursa (job #1601896) | Cod sursa (job #2135049) | Cod sursa (job #192058) | Cod sursa (job #2830742)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
int N;
int V[16001];
int matrice[16001][16001];
int vizitat[16001];
int cost[16001];
int x,y,c,cmax;
void dfs(int nod)
{
vizitat[nod] = 1;
cost[nod] = V[nod];
for(int i = 1; i <= N; i++)
{
if(matrice[nod][i] == 1 && vizitat[i] == 0)
{
dfs(i);
if(cost[i] > 0)
cost[nod] += cost[i];
}
}
}
int main()
{
fin>>N;
for(int i = 1; i <= N; i++)
{
fin>>x;
V[i] = x;
}
for(int i = 1; i <= N; i++)
{
fin>>x>>y;
matrice[x][y] = 1;
matrice[y][x] = 1;
}
dfs(1);
cmax = INT_MIN;
for(int i = 1; i <= N; i++)
{
if(cost[i] > cmax)
cmax = cost[i];
}
//cout<<cmax;
fout<<cmax;
return 0;
}