比赛 20160323 评测结果 AAAAAAAAAA
题目名称 修剪花卉 最终得分 100
用户昵称 KZNS 运行时间 0.026 s
代码语言 C++ 内存使用 0.64 MiB
提交时间 2016-03-23 19:40:35
显示代码纯文本
//KZNS
#include <fstream>
#include <utility>
#include <vector>
using namespace std;
//
ifstream fin ("makeup.in");
ofstream fout ("makeup.out");
typedef pair<int, int> pr;
//
int N;//16000
int v[16003] = {0};
vector<int> gp[16003];
int mz[16003] = {0};
bool ud[16003] = {0};
int ED=0;
//
void rin() {
	fin >> N;
	for (int i = 1; i <= N; i++)
		fin >> v[i];
	int a, b;
	for (int i = 1; i < N; i++) {
		fin >> a >> b;
		gp[a].push_back(b);
		gp[b].push_back(a);
	}
}
void dtr(int x) {
	ud[x] = true;
	mz[x] = v[x];
	for (int i = 0; i < gp[x].size(); i++) {
		if (!ud[gp[x][i]]) {
			dtr(gp[x][i]);
			mz[x] = max(mz[x], mz[x] + mz[gp[x][i]]);
		}
	}
	ED = max(ED, mz[x]);
}
//
int main() {
	rin();
	dtr(1);
	fout << ED;
	return 0;
}
//UBWH