Pagini recente » Cod sursa (job #1382022) | Cod sursa (job #217427) | Cod sursa (job #2753936) | Cod sursa (job #1054705) | Cod sursa (job #2830503)
#include <iostream>
#include <bits/stdc++.h>
#define nMax 16001
using namespace std;
ifstream f("asmax.in");
ofstream g("asmax.out");
int n;
vector<int> adj[100];
vector<bool> visited(100);
vector<int> suma(100);
vector<int> valori(100);
void DFS(int start)
{
visited[start] = true;
suma[start] = valori[start];
for(auto v:adj[start])
{
if(!visited[v])
{
DFS(v);
suma[start] = max(suma[start], suma[start] + suma[v]);
}
}
}
int main()
{
f>>n;
for(int i = 1; i <= n; i++)
{
f>>valori[i];
}
int nod1, nod2;
for(int i = 1; i <= n; i++)
{
f>>nod1>>nod2;
adj[nod1].push_back(nod2);
adj[nod2].push_back(nod1);
}
DFS(1);
int smax = -INT_MAX;
for(int i = 1; i <= n; i++)
{
if(suma[i] > smax)
smax = suma[i];
}
/*for(int i = 1; i <=n; i++)
{
cout<<suma[i]<<" ";
}
cout<<endl;*/
g<<smax;
return 0;
}