Pagini recente » Cod sursa (job #812894) | Cod sursa (job #2901812) | Cod sursa (job #285575) | Cod sursa (job #1410943) | Cod sursa (job #2829352)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream in("asmax.in");
ofstream out("asmax.out");
void DFS(int &nod_curent, vector <int>& viz, vector <int>& val, vector <vector <int>>& lista_vecini) {
viz[nod_curent] = 1;
for (int i = 0; i < lista_vecini[nod_curent].size(); i++)
if (viz[lista_vecini[nod_curent][i]] == 0) {
DFS(lista_vecini[nod_curent][i], viz, val, lista_vecini);
if (val[lista_vecini[nod_curent][i]] > 0)
val[nod_curent] = val[nod_curent] + val[lista_vecini[nod_curent][i]];
}
}
int main() {
int n;
in >> n;
vector <int> val(n + 1, 0);
for (int i = 1; i <= n; i++)
in >> val[i];
vector <vector <int>> v;
v.resize(n + 1);
for (int i = 1; i <= n - 1; i++) {
int x, y;
in >> x >> y;
v[x].push_back(y);
v[y].push_back(x);
}
int nod_curent = 1;
vector <int> viz(n + 1, 0);
DFS(nod_curent, viz, val, v);
out << val[1];
in.close();
out.close();
return 0;
}