Cod sursa(job #2202285)

Utilizator SchnitzelMannPavaloiu Gabriel SchnitzelMann Data 8 mai 2018 12:35:49
Problema Asmax Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include <bits/stdc++.h>
#define N 16001
using namespace std;
ifstream in("asmax.in");
ofstream out("asmax.out");
int nr,vf[N],urm[N],lst[N],arr[N],m;
bool viz[N];
int dfs(int x)
{
	viz[x]=true;
	int p=lst[x],y,s=arr[x];
	while(p)
	{
		y=vf[p];
		if(!viz[y])
			s+=max(0,dfs(y));
		p=urm[p];
	}
	m=max(m,s);
	return s;
}
void ad(int x,int y)
{
	vf[++nr]=y;
	urm[nr]=lst[x];
	lst[x]=nr;
}
int main()
{
    int n,i,x,y;
    in>>n;
    for(i=1;i<=n;i++)
        in>>arr[i];
    for(i=1;i<n;i++)
    {
        in>>x>>y;
        ad(x,y);
        ad(y,x);
    }
    m=arr[1];
    dfs(1);
    out<<m;
    return 0;
}