比赛 20160323 评测结果 AAAAAAAAAA
题目名称 修剪花卉 最终得分 100
用户昵称 KZNS 运行时间 0.026 s
代码语言 C++ 内存使用 0.64 MiB
提交时间 2016-03-23 19:40:35
显示代码纯文本
  1. //KZNS
  2. #include <fstream>
  3. #include <utility>
  4. #include <vector>
  5. using namespace std;
  6. //
  7. ifstream fin ("makeup.in");
  8. ofstream fout ("makeup.out");
  9. typedef pair<int, int> pr;
  10. //
  11. int N;//16000
  12. int v[16003] = {0};
  13. vector<int> gp[16003];
  14. int mz[16003] = {0};
  15. bool ud[16003] = {0};
  16. int ED=0;
  17. //
  18. void rin() {
  19. fin >> N;
  20. for (int i = 1; i <= N; i++)
  21. fin >> v[i];
  22. int a, b;
  23. for (int i = 1; i < N; i++) {
  24. fin >> a >> b;
  25. gp[a].push_back(b);
  26. gp[b].push_back(a);
  27. }
  28. }
  29. void dtr(int x) {
  30. ud[x] = true;
  31. mz[x] = v[x];
  32. for (int i = 0; i < gp[x].size(); i++) {
  33. if (!ud[gp[x][i]]) {
  34. dtr(gp[x][i]);
  35. mz[x] = max(mz[x], mz[x] + mz[gp[x][i]]);
  36. }
  37. }
  38. ED = max(ED, mz[x]);
  39. }
  40. //
  41. int main() {
  42. rin();
  43. dtr(1);
  44. fout << ED;
  45. return 0;
  46. }
  47. //UBWH