Pagini recente » Algoritmiada 2013 - Clasament Runda 3, Clasele 11-12 | Cod sursa (job #406972) | Profil Mr. Teofilos | Istoria paginii utilizator/megamor | Cod sursa (job #414940)
Cod sursa(job #414940)
#include<fstream>
using namespace std;
int n,cost[16005],maxim=-100000000;
int vizitat[16005];
struct nod{
int info;
nod *next;};
nod *g[16005];
void dfs(int k);
void adauga(int a,int b);
int costulmax(int k);
ofstream fout("asmax.out");
int main ()
{
ifstream fin("asmax.in");
fin>>n;
int i;
for(i=1;i<=n;i++)
fin>>cost[i];
for(i=1;i<n;i++)
{
int a,b;
fin>>a>>b;
adauga(a,b);
adauga(b,a);
}
dfs(1);
fout<<maxim;
return 0;
}
void dfs(int k)
{
int nrv=0;
vizitat[k]=1;
for(nod *p=g[k];p;p=p->next)
{
nrv++;
if(vizitat[p->info]==0)
{
dfs (p->info);
if (cost[k]<cost[k]+cost[p->info])
cost[k]=cost[k]+cost[p->info];
if (cost[k]>maxim)
maxim=cost[k];
}
}
if (nrv==1)
if (cost[k]>maxim)
maxim=cost[k];
}
void adauga(int a,int b)
{
nod *p;
p=new nod;
p->info=b;
p->next=g[a];
g[a]=p;
}