Cod sursa(job #2517431)

Utilizator drknss_Hehe hehe drknss_ Data 3 ianuarie 2020 16:01:53
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.9 kb
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ifstream in("asmax.in");
ofstream out("asmax.out");
#define all(a) (a).begin(), (a).end()
#define forn(i,a,b) for (int i = a; i <= b; i++)
#define ff first
#define ss second
#define pb push_back
#define pi pair <int, int>
# define sz(x) (int)((x).size())
#define inf 1000000000
//#define int long long
const ll mod = 1000000007;
const int N = 16000 + 11;
int dp[N],viz[N],n,x,y,ans=INT_MIN;
vector<int>v[N];
void dfs(int nod){
	viz[nod]=1;
	for(auto it:v[nod]){
		if(!viz[it]){
			dfs(it);
			dp[nod]=max(dp[nod],dp[it]+dp[nod]);
		//	ans=max(ans,dp[nod]);
		}
	}
}

int32_t main(){
ios_base::sync_with_stdio(0); cin.tie(); cerr.tie(); cout.tie();
	in>>n;
	forn(i,1,n)in>>dp[i];
	forn(i,1,n-1){
		in>>x>>y;
		v[x].pb(y);
		v[y].pb(x);
	}
	dfs(1);
	forn(i,1,n)ans=max(dp[i],ans);
	out<<ans<<'\n';
return 0;
}