#include<bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_pbds;
#define debug(x) cerr << '[' << (#x) << "] = " << x << '\n';
template<class T> using ordered_set = tree<T, null_type , less<T> , rb_tree_tag , tree_order_statistics_node_update> ;
const int maxn = 2e5 + 5;
//https://oj.uz/problem/view/COCI20_putovanje
struct Edge{
long long to;
long long single, multi;
};
vector<Edge>g[maxn];
long long ans = 0, sub[maxn];
int tin[maxn], tout[maxn], timer, l;
vector<vector<int>>up(maxn, vector<int>(20));
void dfs(int node, int parent, Edge to_parent) {
for(Edge e : g[node]) {
if(e.to!=parent) {
dfs(e.to, node, e);
sub[node] += sub[e.to];
}
}
if(parent!=0) ans += min(sub[node]*to_parent.single, to_parent.multi);
}
void dfs2(int node, int parent) {
tin[node] = timer++;
up[node][0] = parent;
for(int i=1; i<=l; ++i) {
up[node][i] = up[up[node][i-1]][i-1];
}
for(Edge e : g[node]) {
if(e.to!=parent) dfs2(e.to, node);
}
tout[node] = timer++;
}
void PlayGround() {
int n; cin >> n;
l = log2(n) + 2;
for(int i=1; i<n; ++i) {
long long u, v, c, cc; cin >> u >> v >> c >> cc;
Edge e = {v, c, cc};
g[u].emplace_back(e);
e.to = u;
g[v].emplace_back(e);
}
dfs2(1, 1);
auto is_ancestor = [=] (int u, int v) {
return tin[u] <= tin[v] && tout[u] >= tout[v];
};
auto getLCA = [=] (int u, int v) {
if(is_ancestor(u, v))
return u;
if(is_ancestor(v, u))
return v;
for(int i=l; i>=0; --i) {
if(!is_ancestor(up[u][i], v))
u = up[u][i];
}
return up[u][0];
};
for(int i=1; i<n; ++i) {
int lca = getLCA(i, i+1);
auto update = [&] (int u, int v) {
sub[u]++, sub[v]--;
};
update(i, lca);
update(i+1, lca);
}
Edge e = {0, 0, 0};
dfs(1, 0, e);
cout << ans << '\n';
#ifndef ONLINE_JUDGE
cerr << "Time elapsed: " << 1.0 * clock() / CLOCKS_PER_SEC << " s.\n";
#endif
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
// #ifndef ONLINE_JUDGE
// freopen("input.txt", "r", stdin);
// #endif
PlayGround();
return 0;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
23 ms |
28492 KB |
Output is correct |
2 |
Correct |
24 ms |
28660 KB |
Output is correct |
3 |
Correct |
29 ms |
28620 KB |
Output is correct |
4 |
Correct |
28 ms |
28656 KB |
Output is correct |
5 |
Correct |
25 ms |
28684 KB |
Output is correct |
6 |
Correct |
23 ms |
28464 KB |
Output is correct |
7 |
Correct |
22 ms |
28560 KB |
Output is correct |
8 |
Correct |
24 ms |
28636 KB |
Output is correct |
9 |
Correct |
24 ms |
28624 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
175 ms |
45068 KB |
Output is correct |
2 |
Correct |
179 ms |
47088 KB |
Output is correct |
3 |
Correct |
183 ms |
49896 KB |
Output is correct |
4 |
Correct |
187 ms |
48380 KB |
Output is correct |
5 |
Correct |
24 ms |
28612 KB |
Output is correct |
6 |
Correct |
177 ms |
44588 KB |
Output is correct |
7 |
Correct |
107 ms |
40980 KB |
Output is correct |
8 |
Correct |
185 ms |
44592 KB |
Output is correct |
9 |
Correct |
117 ms |
44692 KB |
Output is correct |
10 |
Correct |
106 ms |
44268 KB |
Output is correct |
11 |
Correct |
113 ms |
45712 KB |
Output is correct |
12 |
Correct |
120 ms |
45896 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
23 ms |
28492 KB |
Output is correct |
2 |
Correct |
24 ms |
28660 KB |
Output is correct |
3 |
Correct |
29 ms |
28620 KB |
Output is correct |
4 |
Correct |
28 ms |
28656 KB |
Output is correct |
5 |
Correct |
25 ms |
28684 KB |
Output is correct |
6 |
Correct |
23 ms |
28464 KB |
Output is correct |
7 |
Correct |
22 ms |
28560 KB |
Output is correct |
8 |
Correct |
24 ms |
28636 KB |
Output is correct |
9 |
Correct |
24 ms |
28624 KB |
Output is correct |
10 |
Correct |
175 ms |
45068 KB |
Output is correct |
11 |
Correct |
179 ms |
47088 KB |
Output is correct |
12 |
Correct |
183 ms |
49896 KB |
Output is correct |
13 |
Correct |
187 ms |
48380 KB |
Output is correct |
14 |
Correct |
24 ms |
28612 KB |
Output is correct |
15 |
Correct |
177 ms |
44588 KB |
Output is correct |
16 |
Correct |
107 ms |
40980 KB |
Output is correct |
17 |
Correct |
185 ms |
44592 KB |
Output is correct |
18 |
Correct |
117 ms |
44692 KB |
Output is correct |
19 |
Correct |
106 ms |
44268 KB |
Output is correct |
20 |
Correct |
113 ms |
45712 KB |
Output is correct |
21 |
Correct |
120 ms |
45896 KB |
Output is correct |
22 |
Correct |
156 ms |
38340 KB |
Output is correct |
23 |
Correct |
137 ms |
37268 KB |
Output is correct |
24 |
Correct |
148 ms |
38084 KB |
Output is correct |
25 |
Correct |
27 ms |
28620 KB |
Output is correct |
26 |
Correct |
66 ms |
32744 KB |
Output is correct |
27 |
Correct |
122 ms |
36804 KB |
Output is correct |
28 |
Correct |
100 ms |
42740 KB |
Output is correct |
29 |
Correct |
120 ms |
45808 KB |
Output is correct |
30 |
Correct |
113 ms |
45508 KB |
Output is correct |
31 |
Correct |
24 ms |
28620 KB |
Output is correct |