比赛 |
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