Pagini recente » Cod sursa (job #1014369) | Cod sursa (job #345428) | Cod sursa (job #2754343) | Cod sursa (job #2758497) | Cod sursa (job #2128200)
#include <fstream>
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
unsigned int n,i,j,a[16001][16001],c[16001],viz[16001],Smax=0,S=0;
int v[16001],x,y;
void bfs(int nod);
int main()
{
fin>>n;
for(i=1;i<=n;i++)
{
fin>>v[i];
Smax=Smax+v[i];
}
for(i=1;i<n;i++)
{
fin>>x>>y;
a[x][y]=a[y][x]=1;
}
bfs(1);
fout<<Smax;
fin.close();
fout.close();
return 0;
}
void bfs(int nod)
{
int ic=0,sc=0;
c[ic]=nod;
viz[nod]=1;
S=v[nod];
while(ic<=sc)
{
nod=c[ic];
for(i=1;i<=n;i++)
if(a[nod][i]==1 && viz[i]==0)
{
sc++;
c[sc]=i;
S=S+v[i];
if(S>Smax) Smax=S;
viz[i]=1;
}
ic++;
}
}