Cod sursa(job #1363980)

Utilizator pepsiM4A1Ozturk Arif pepsiM4A1 Data 27 februarie 2015 13:18:00
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <stdio.h>
#include <vector>
int val[16001];
int fin[16001];
bool vis[16001];
std::vector<int>adj[16001];
int n,maxim=-10000;
void dfs(int nod,int t)
{
    if(vis[nod]==0)
    {
        vis[nod]=1;
        std::vector<int>::iterator it;
        for(it=adj[nod].begin();it!=adj[nod].end();++it)
        {
            if(vis[*it]==0) dfs(*it,nod);
            if(val[*it]>0&&*it!=t) val[nod]+=val[*it];
        }
    }
    if(maxim<val[nod]) maxim=val[nod];
}
int main()
{
    freopen ("asmax.in","r",stdin);
    freopen ("asmax.out","w",stdout);
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&val[i]);
    }
    int p1,p2;
    for(int i=1;i<n;i++)
    {
        scanf("%d%d",&p1,&p2);
        adj[p1].push_back(p2);
        adj[p2].push_back(p1);
    }
    for(int i=1;i<=n;i++)
    {
        dfs(i,0);
    }
    printf("%d\n",maxim);
}