Cod sursa(job #1233194)

Utilizator catalincraciunCraciun Catalin catalincraciun Data 24 septembrie 2014 22:03:18
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
// Craciun Catalin
//  Asmax
//   Infoarena
#include <iostream>
#include <fstream>
#include <vector>

#define NMax 20000

using namespace std;

ifstream f("asmax.in");
ofstream g("asmax.out");

int n;
int V[NMax]; // Values
bool vis[NMax]; // Visited
vector<int> neigh[NMax]; // Neighboors
int maxim = 0;
bool found = false;

void dfs(int nod) {

	vis[nod] = true;
	
	for (unsigned int i=0;i<neigh[nod].size();i++) {
		if (!vis[neigh[nod][i]]) {
			dfs(neigh[nod][i]);
			if (V[neigh[nod][i]] > 0) {
				V[nod]+=V[neigh[nod][i]];
			}
		}
	}
}

int main() {
	
	f>>n;
	for (int i=1;i<=n;i++) {
		f>>V[i];
	}
	for (int i=1;i<=n-1;i++) {
		int x, y;
		f>>x>>y;
		neigh[x].push_back(y);
		neigh[y].push_back(x);
	}
	
	vis[1] = true;
	dfs(1);
	
	maxim = V[1];
	for (int i=2;i<=n;i++)
		if (V[i]>maxim)
			maxim = V[i];
			
	g<<maxim<<'\n';
	
	f.close(); g.close();
	
	return 0;
}