Cod sursa(job #1803826)

Utilizator GabiTulbaGabi Tulba-Lecu GabiTulba Data 11 noiembrie 2016 22:16:10
Problema Asmax Scor 100
Compilator cpp Status done
Runda cerculdeinfo-lectia6-arbori Marime 0.87 kb
#include <cstdio>
#include <algorithm>
#include <vector>
#define MaxN  16005
#define INF 2000000000
using namespace std;
 
int N,cost[MaxN],a,b,val,Max=-INF;
vector<int>List[MaxN];
bool visited[MaxN]={};
int DFS(int node)
{
    visited[node]=true;
    for(int i=0;i<List[node].size();i++)
    {
        if(!visited[List[node][i]])
        {
            val=DFS(List[node][i]);
            if(val>0)cost[node]+=val;
        }
    }
    return cost[node];
}
int main()
{
    freopen("asmax.in","r",stdin);
    freopen("asmax.out","w",stdout);
    scanf("%d",&N);
    for(int i=1;i<=N;i++)
        scanf("%d",&cost[i]);
    for(int i=1;i<N;i++)
    {
        scanf("%d%d",&a,&b);
        List[a].push_back(b);
        List[b].push_back(a);
    }
    DFS(1);
    for(int i=1;i<=N;i++)
        Max=max(Max,cost[i]);
    printf("%d",Max);
    return 0;
}