Mai intai trebuie sa te autentifici.
Cod sursa(job #1455938)
Utilizator | Data | 29 iunie 2015 14:52:55 | |
---|---|---|---|
Problema | Asmax | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 1.04 kb |
#include<iostream>
#include<fstream>
#include<cmath>
#include<algorithm>
#include<vector>
#include<bitset>
#include<cstring>
#include<queue>
#define ull unsigned long long
#define ll long long
#define pb push_back
#define FOR(a,b,c) for (int a=b;a<=c; ++a)
#define ROF(a,b,c) for (int a=b;a>=c; --a)
using namespace std;
ifstream f("asmax.in");
ofstream g("asmax.out");
int N,max1;
int v[16010];
vector<int> a[16010];
bitset<16010> verif;
void depth(int);
int main()
{
max1=-(1<<31);
f>>N;
FOR (i,1,N) f>>v[i];
FOR (i,1,N-1) {
int x,y;
f>>x>>y;
a[x].pb(y);
a[y].pb(x);
}
depth(1);
/*FOR (i,1,N)
cout<<v[i]<<' ';*/
g<<max1;
f.close();g.close();
return 0;
}
void depth(int n) {
verif[n]=true;
//cout<<n<<'\n';
for (unsigned int k=0;k<a[n].size();++k) {
if (!verif[a[n][k]]) {
depth(a[n][k]);
v[n]+=(v[a[n][k]]>0) ? v[a[n][k]] : 0;
}
}
max1=(v[n]>max1) ? v[n] : max1;
}