Advertisement
Guest User

Untitled

a guest
Jul 19th, 2018
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.13 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. #define pb push_back
  5. #define mp make_pair
  6.  
  7. using namespace std;
  8.  
  9. typedef long long ll;
  10.  
  11. const ll INF = 1e17;
  12.  
  13. int a[100000];
  14. ll ans[100000], sm, sum[100000];
  15. vector <int> g[100000], u;
  16.  
  17. ll dfs(int v)
  18. {
  19. ll rew;
  20. u[v] = 1;
  21. for(int i = 0; i < g[v].size(); i++)
  22. {
  23. int to = g[v][i];
  24. if(!u[to])
  25. {
  26. rew = dfs(to);
  27. ans[v] = max(ans[v], rew);
  28. sum[v] += rew;
  29. }
  30. }
  31. u[v] = 2;
  32. ans[v] = max(ans[v], sm - a[v] - sum[v]);
  33. return sum[v] + a[v];
  34. }
  35.  
  36. int main()
  37. {
  38. int n;
  39. cin >> n;
  40. u.resize(n);
  41. for(int i = 0; i < n; i++)
  42. {
  43. cin >> a[i];
  44. sm += a[i];
  45. }
  46. //cout << sm << endl;
  47. for(int i = 0; i < n - 1; i++)
  48. {
  49. int a, b;
  50. cin >> a >> b;
  51. a--, b--;
  52. g[a].pb(b);
  53. g[b].pb(a);
  54. }
  55. ll c = dfs(0);
  56. ll mn = INF;
  57. int num;
  58. for(int i = 0; i < n; i++)
  59. if(mn > ans[i])
  60. {
  61. mn = ans[i];
  62. num = i;
  63. }
  64. cout << num + 1;
  65.  
  66. return 0;
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement