#include <bits/stdc++.h>
using namespace std;
template<typename T>
void out(T x) { cout << x << endl; exit(0); }
#define watch(x) cout << (#x) << " is " << (x) << endl
using ll = long long;
const int maxn = 1e6 + 5;
int n;
ll a[maxn];
vector<int> g[maxn];
int main() {
ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
cin>>n;
for (int i=1; i<=n; i++) {
cin>>a[i];
}
ll res = 0;
for (int i=0; i<n-1; i++) {
int u,v; cin>>u>>v;
g[u].push_back(v);
g[v].push_back(u);
res += max(a[u],a[v]);
}
ll sum = 0;
ll hi = 0;
for (int i=1; i<=n; i++) {
hi = max(hi,a[i]);
sum += a[i];
}
res += sum;
res -= hi;
out(res);
return 0;
}
// [1] it's optimal to always snip off an edge from the max node in the tree (swapping argument)
// sum over edges e { max(e.u, e.v) }
// [2] every node is eventually isolated and snipped off
// sum a[i]
// subtract max a[i] because it's contribution is entirely from [1]
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
15 ms |
23788 KB |
Output is correct |
2 |
Correct |
15 ms |
23788 KB |
Output is correct |
3 |
Correct |
15 ms |
23788 KB |
Output is correct |
4 |
Correct |
16 ms |
23916 KB |
Output is correct |
5 |
Correct |
15 ms |
23788 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
45 ms |
26988 KB |
Output is correct |
2 |
Correct |
38 ms |
26240 KB |
Output is correct |
3 |
Correct |
37 ms |
26220 KB |
Output is correct |
4 |
Correct |
40 ms |
26476 KB |
Output is correct |
5 |
Correct |
53 ms |
27904 KB |
Output is correct |
6 |
Correct |
52 ms |
27756 KB |
Output is correct |
7 |
Correct |
47 ms |
27244 KB |
Output is correct |
8 |
Correct |
44 ms |
26860 KB |
Output is correct |
9 |
Correct |
35 ms |
25860 KB |
Output is correct |
10 |
Correct |
53 ms |
27756 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
15 ms |
23788 KB |
Output is correct |
2 |
Correct |
15 ms |
23788 KB |
Output is correct |
3 |
Correct |
15 ms |
23788 KB |
Output is correct |
4 |
Correct |
16 ms |
23916 KB |
Output is correct |
5 |
Correct |
15 ms |
23788 KB |
Output is correct |
6 |
Correct |
17 ms |
23788 KB |
Output is correct |
7 |
Correct |
15 ms |
23916 KB |
Output is correct |
8 |
Correct |
15 ms |
23916 KB |
Output is correct |
9 |
Correct |
16 ms |
23844 KB |
Output is correct |
10 |
Correct |
16 ms |
23916 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
15 ms |
23788 KB |
Output is correct |
2 |
Correct |
15 ms |
23788 KB |
Output is correct |
3 |
Correct |
15 ms |
23788 KB |
Output is correct |
4 |
Correct |
16 ms |
23916 KB |
Output is correct |
5 |
Correct |
15 ms |
23788 KB |
Output is correct |
6 |
Correct |
45 ms |
26988 KB |
Output is correct |
7 |
Correct |
38 ms |
26240 KB |
Output is correct |
8 |
Correct |
37 ms |
26220 KB |
Output is correct |
9 |
Correct |
40 ms |
26476 KB |
Output is correct |
10 |
Correct |
53 ms |
27904 KB |
Output is correct |
11 |
Correct |
52 ms |
27756 KB |
Output is correct |
12 |
Correct |
47 ms |
27244 KB |
Output is correct |
13 |
Correct |
44 ms |
26860 KB |
Output is correct |
14 |
Correct |
35 ms |
25860 KB |
Output is correct |
15 |
Correct |
53 ms |
27756 KB |
Output is correct |
16 |
Correct |
17 ms |
23788 KB |
Output is correct |
17 |
Correct |
15 ms |
23916 KB |
Output is correct |
18 |
Correct |
15 ms |
23916 KB |
Output is correct |
19 |
Correct |
16 ms |
23844 KB |
Output is correct |
20 |
Correct |
16 ms |
23916 KB |
Output is correct |
21 |
Correct |
26 ms |
24728 KB |
Output is correct |
22 |
Correct |
23 ms |
24556 KB |
Output is correct |
23 |
Correct |
60 ms |
27628 KB |
Output is correct |
24 |
Correct |
48 ms |
26616 KB |
Output is correct |
25 |
Correct |
45 ms |
26476 KB |
Output is correct |
26 |
Correct |
35 ms |
25580 KB |
Output is correct |
27 |
Correct |
38 ms |
25964 KB |
Output is correct |
28 |
Correct |
52 ms |
26732 KB |
Output is correct |
29 |
Correct |
41 ms |
25836 KB |
Output is correct |
30 |
Correct |
62 ms |
27884 KB |
Output is correct |