Pagini recente » Cod sursa (job #1353105) | Cod sursa (job #443533) | Cod sursa (job #563373) | Cod sursa (job #2445182) | Cod sursa (job #2672590)
#include <fstream>
#include <vector>
using namespace std;
ifstream f("asmax.in");
ofstream g("asmax.out");
struct node
{
int val;
vector<int> con;
} graf[16005];
int n, maxim = -2000000000;
bool viz[16005];
void read()
{
f>>n;
for(int i = 1; i<=n; i++)
{
f>>graf[i].val;
}
int x, y;
f>>x>>y;
while(!f.eof())
{
graf[x].con.push_back(y);
graf[y].con.push_back(x);
f>>x>>y;
}
}
int getVal(int nr)
{
int sum = graf[nr].val;
viz[nr] = true;
for(int i = 0; i<graf[nr].con.size(); i++)
{
if(!viz[graf[nr].con[i]])
{
sum = max(sum, sum+getVal(graf[nr].con[i]));
}
}
if(sum > maxim)
maxim = sum;
return sum;
}
void afisare()
{
g<<maxim;
}
int main()
{
read();
getVal(1);
afisare();
return 0;
}