Pagini recente » Cod sursa (job #2356672) | Cod sursa (job #2877472) | Cod sursa (job #2181933) | Cod sursa (job #806066) | Cod sursa (job #2290413)
#include <bits/stdc++.h>
using namespace std;
ifstream in("asmax.in");
ofstream out("asmax.out");
vector <int> mat[16100];
int n,v[16100],a,b,summax = -1000000000;
bool viz[16100];
void dfs(int nod)
{
viz[nod] = true;
for (int i = 0; i < mat[nod].size(); ++i)
{
int y = mat[nod][i];
if (viz[y] == false)
{dfs(y);
if (v[y] > 0)
v[nod] += v[y];}
}
}
int main()
{
in>>n;
for (int i = 1; i <= n; ++i)
in>>v[i];
while (in>>a>>b)
{
mat[a].push_back(b);
mat[b].push_back(a);
}
for (int i = 1;i <= n;++i)
if (viz[i] == false)
dfs(i);
for (int i = 1;i <= n;++i)
summax = max(summax,v[i]);
out<<summax;
return 0;
}