Cod sursa(job #2677382)
| Utilizator | Data | 26 noiembrie 2020 14:08:12 | |
|---|---|---|---|
| Problema | Asmax | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.64 kb |
#include <bits/stdc++.h>
using namespace std;
ifstream f("asmax.in");
ofstream g("asmax.out");
vector <int> a[16001];
int n,val[16001],summax=INT_MIN;
bool viz[16001];
int dfs(int x)
{
int y;
viz[x]=1;
for(int k:a[x])
if(!viz[k])
{
y=dfs(k);
if(y>0) val[x]+=y;
}
return val[x];
}
int main()
{
f>>n;
for(int k=1;k<=n;k++) f>>val[k];
for(int k=1;k<n;k++)
{
int i,j;
f>>i>>j;
a[i].push_back(j);
a[j].push_back(i);
}
dfs(1);
for(int i=1;i<=n;i++)
summax=max(summax,val[i]);
g<<summax;
}
