Pagini recente » Cod sursa (job #1396695) | Cod sursa (job #1883102)
#include <stdio.h>
#include <vector>
using namespace std;
vector <int> muchie[100000];
char vizitat[100000];
int d[100000];
int maxim;
FILE *fin = fopen("asmax.in" ,"r");
FILE *fout = fopen("asmax.out", "w");
void DFS(int nod)
{
vizitat[nod]=1;
for(auto node:muchie[nod])
{
if(vizitat[node]==0)
{
DFS(node);
if(d[node]>0)d[nod]+=d[node];
if(d[nod]>maxim) maxim=d[nod];
}
}
}
int main()
{
int n;
fscanf(fin, "%d", &n);
for(int i=1;i<=n;i++)
{
fscanf(fin, "%d", &d[i]);
}
for(int i=1;i<n;i++)
{
int x, y;
fscanf(fin, "%d%d", &x, &y);
muchie[x].push_back(y);
muchie[y].push_back(x);
}
maxim = -(1<<30);
DFS(1);
fprintf(fout, "%d", maxim);
return 0;
}