Pagini recente » Cod sursa (job #1144602) | Cod sursa (job #2906792) | Cod sursa (job #1939838) | Cod sursa (job #2178691) | Cod sursa (job #1692486)
#include <iostream>
#include<fstream>
#include<bitset>
#include<queue>
using namespace std;
int tt[16005],best[16005],mx,i,n,a,b,x;
bitset<16005> parent;
bitset<16005> inq;
queue<int> q;
int main()
{
ifstream f("asmax.in");
ofstream g("asmax.out");
f>>n;
mx=-(1<<30);
for(i=1;i<=n;i++)
{
f>>best[i];
tt[i]=i;
parent[i]=0;
}
for(i=1;i<=n-1;i++)
{
f>>a>>b;
tt[b]=a;
parent[a]=1;
}
for(i=1;i<=n;i++)
{
if(!parent[i]) {q.push(i);}
}
while(!q.empty())
{
x=q.front();
q.pop();
if(x!=tt[x])
{
if(best[x]>0) best[tt[x]]+=best[x];
if(!inq[tt[x]])
{q.push(tt[x]);
inq[tt[x]]=1;}
}
}
for(i=1;i<=n;i++) if(best[i]>mx) mx=best[i];
g<<mx;
return 0;
}