Cod sursa(job #1498135)

Utilizator ArkinyStoica Alex Arkiny Data 7 octombrie 2015 23:27:00
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include<fstream>
#include<vector>
using namespace std;

ifstream in("asmax.in");
ofstream out("asmax.out");
#define MAX 16001
int S[MAX], V[MAX],N,viz[MAX];

vector<int> node[MAX];

void DFS(int i)
{
	S[i] = V[i];
	for (int j = 0;j < node[i].size();++j)
	{
		if (!viz[node[i][j]])
		{
			viz[node[i][j]] = 1;
			DFS(node[i][j]);
			if (S[node[i][j]]>0)
			{
				S[i] += S[node[i][j]];
			}

		}
	}
}

int main()
{
	int N;
	in >> N;
	for (int i = 1;i <= N;++i)
		in >> V[i];

	int a, b;
	while (in >> a && in >> b)
		node[a].push_back(b),node[b].push_back(a);

	viz[1] = 1;

	DFS(1);
	int max = 1 << 31;
	for (int i = 1;i <= N;++i)
		if (S[i] > max)
			max = S[i];
	out << max;
	return 0;
}