Pagini recente » Cod sursa (job #86852) | Cod sursa (job #2106836) | Cod sursa (job #2896579) | Cod sursa (job #3135879) | Cod sursa (job #1603326)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("asmax.in");
ofstream g("asmax.out");
int n,V[16001],maxim,M[16001];
struct Muchie{
int nod;
Muchie * next;
};
Muchie * A[16001];
void add(int a, int b){
Muchie * q;
q=new Muchie;
q->nod=b;
q->next=A[a];
A[a]=q;
}
void read(){
f>>n;
for(int i=1;i<=n;i++){
f>>V[i];
}
int x,y;
while(f>>x>>y){
add(x,y);
add(y,x);
}
}
int dfs(int nod){
Muchie * q;
q=A[nod];
int suma=V[nod];
while (q){
if(!M[q->nod]){
M[q->nod]=1;
suma+=dfs(q->nod);
}
q=q->next;
}
if(suma>maxim){
maxim=suma;
}
if(suma<0){
return 0;
}else{
return suma;
}
}
int main()
{
M[1]=1;
read();
dfs(1);
g<<maxim;
return 0;
}