Pagini recente » Cod sursa (job #120729) | Cod sursa (job #1278651) | Cod sursa (job #2863532) | Cod sursa (job #1575251) | Cod sursa (job #2830319)
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream f("asmax.in");
ofstream g("asmax.out");
int i, j, n, x, y, valoare[16005], valoare_subgraf_maxima=-1001;
vector <int> G[16005];
bool vizitat[16005];
void DFS(int s)
{
vizitat[s]=1;
for (auto i: G[s])
{
if (!vizitat[i])
{
DFS(i);
if (valoare[i]>0)
valoare[s]+=valoare[i];
}
}
}
int main()
{
f>>n;
for (i=1; i<=n ; i++)
f>>valoare[i];
for (i=1; i<=n; i++)
{
f>>x>>y;
G[x].push_back(y);
G[y].push_back(x);
}
DFS(1);
for (int i=1; i<=n; i++)
if (valoare[i]>valoare_subgraf_maxima)
valoare_subgraf_maxima=valoare[i];
g<<valoare_subgraf_maxima;
return 0;
}