Pagini recente » Cod sursa (job #933186) | Cod sursa (job #1489868) | Cod sursa (job #301154) | Monitorul de evaluare | Cod sursa (job #2830316)
#include <bits/stdc++.h>
using namespace std;
ifstream f("asmax.in");
ofstream g("asmax.out");
vector <int> G[16005];
int i, j, n, x, y, valoare[16005], valori_subgraf_maxime[16005], valoare_subgraf_maxima;
bool vizitat[16005];
void DFS(int s)
{
vizitat[s]=1;
valori_subgraf_maxime[s]=valoare[s];
for (auto i: G[s])
{
if (!vizitat[i])
{
DFS(i);
if (valori_subgraf_maxime[i]+valori_subgraf_maxime[s]>valori_subgraf_maxime[s])
valori_subgraf_maxime[s]=valori_subgraf_maxime[s]+valori_subgraf_maxime[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 (valori_subgraf_maxime[i]>valoare_subgraf_maxima)
valoare_subgraf_maxima=valori_subgraf_maxime[i];
g<<valoare_subgraf_maxima;
return 0;
}