Cod sursa(job #1084016)

Utilizator NicuCJNicu B. NicuCJ Data 16 ianuarie 2014 17:03:23
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
vector<int> gr[16001];
int n, i, nr[16001], maxim, a, b, xf;
long long q[16001];
bool viz[16001];
int exinc[16001];
void dfs(int k, int last)
{
	if(viz[k])
		return;
	viz[k]=1;
	int t;
	for(t=0; t<gr[k].size(); t++)
	{
		if(!viz[gr[k][t]])
		{
			dfs(gr[k][t], k);
		}
		if(q[gr[k][t]]>0 && last!=gr[k][t])
			q[k]+=q[gr[k][t]];
	}
}
int main()
{
	maxim=-16777216;
	ifstream f("asmax.in");
	ofstream g("asmax.out");
	f>>n;
	for(i=1; i<=n; i++)
	{
		f>>q[i];
	}
	for(i=1; i<n; i++)
	{
		f>>a>>b;
		gr[a].push_back(b);
		gr[b].push_back(a);
	}
	dfs(1, 0);
	for(i=1; i<=n; i++)
	{
		if(q[i]>maxim)
			maxim=q[i];
	}
	g<<maxim;
}