#include <bits/stdc++.h>
#define fast_cin ios_base::sync_with_stdio(0); cin.tie(NULL); cerr.tie(NULL);
#define endl "\n"
#define dbg(x) cerr << #x << ": " << x << endl;
#define DBG cerr << __LINE__ << ": I GOT STUCK\n";
using namespace std;
typedef long long ll;
typedef long double db;
struct Edge{
ll to;
ll single, multi;
};
const ll mxn = 2e5 + 5;
ll n, LOG;
vector<Edge>adj[mxn];
vector<vector<ll>>up(mxn, vector<ll>(20));
ll in[mxn], out[mxn], sub[mxn];
ll timer, ans;
void dfs1(ll node, ll par, Edge to_parent){
for(Edge child: adj[node]){
if(child.to != par){
dfs1(child.to, node, child);
sub[node] += sub[child.to];
}
}
if(par!= 0)ans+= min(sub[node]*to_parent.single, to_parent.multi);
}
void dfs2(ll node, ll par){
in[node] = ++timer;
up[node][0] = par;
for(ll i = 1;i<=LOG;i++){
up[node][i] = up[up[node][i-1]][i-1];
}
for(auto child: adj[node]){
if(child.to != par){
dfs2(child.to, node);
}
}
out[node] = ++timer;
}
bool is_ancestor(ll u, ll v){
// check if u is an ancestor of v
return in[u] <= in[v] && out[u] >= out[v];
}
ll getlca(ll u, ll v){
// get lca of u and v;
if(is_ancestor(u,v))return u;
if(is_ancestor(v,u))return v;
for(ll i = LOG;i >=0; i--){
if(!is_ancestor(up[u][i], v))
u = up[u][i];
}
return up[u][0];
}
void solve(){
cin >> n;
LOG = (ll)log2(n) + 1;
for(ll i =0;i<n-1;i++){
ll u, v, c1, c2;
cin >> u >> v >> c1 >> c2;
Edge e = {v, c1, c2};
adj[u].emplace_back(e);
e.to = u;
adj[v].emplace_back(e);
}
dfs2(1,1);
for(ll i =1;i<n;i++){
ll lca = getlca(i, i+1);
if(lca == i){
sub[i]--;
sub[i+1]++;
}
else if(lca == i+1){
sub[i]++;
sub[i+1]--;
}
else{
sub[i] ++;
sub[i+1]++;
sub[lca]-=2;
}
}
Edge e = {0, 0, 0};
dfs1(1, 0, e);
cout << ans << endl;
}
int main() {
fast_cin;
int test;test = 1;
// int test;cin >>test;
while(test--){
solve();
}
return 0;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
37 ms |
44148 KB |
Output is correct |
2 |
Correct |
37 ms |
44320 KB |
Output is correct |
3 |
Correct |
38 ms |
44356 KB |
Output is correct |
4 |
Correct |
41 ms |
44384 KB |
Output is correct |
5 |
Correct |
38 ms |
44396 KB |
Output is correct |
6 |
Correct |
35 ms |
44108 KB |
Output is correct |
7 |
Correct |
37 ms |
44200 KB |
Output is correct |
8 |
Correct |
36 ms |
44256 KB |
Output is correct |
9 |
Correct |
38 ms |
44348 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
209 ms |
60612 KB |
Output is correct |
2 |
Correct |
214 ms |
62504 KB |
Output is correct |
3 |
Correct |
237 ms |
65044 KB |
Output is correct |
4 |
Correct |
243 ms |
63684 KB |
Output is correct |
5 |
Correct |
35 ms |
44276 KB |
Output is correct |
6 |
Correct |
229 ms |
59964 KB |
Output is correct |
7 |
Correct |
138 ms |
56384 KB |
Output is correct |
8 |
Correct |
215 ms |
60188 KB |
Output is correct |
9 |
Correct |
129 ms |
60520 KB |
Output is correct |
10 |
Correct |
125 ms |
59960 KB |
Output is correct |
11 |
Correct |
132 ms |
61268 KB |
Output is correct |
12 |
Correct |
137 ms |
61524 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
37 ms |
44148 KB |
Output is correct |
2 |
Correct |
37 ms |
44320 KB |
Output is correct |
3 |
Correct |
38 ms |
44356 KB |
Output is correct |
4 |
Correct |
41 ms |
44384 KB |
Output is correct |
5 |
Correct |
38 ms |
44396 KB |
Output is correct |
6 |
Correct |
35 ms |
44108 KB |
Output is correct |
7 |
Correct |
37 ms |
44200 KB |
Output is correct |
8 |
Correct |
36 ms |
44256 KB |
Output is correct |
9 |
Correct |
38 ms |
44348 KB |
Output is correct |
10 |
Correct |
209 ms |
60612 KB |
Output is correct |
11 |
Correct |
214 ms |
62504 KB |
Output is correct |
12 |
Correct |
237 ms |
65044 KB |
Output is correct |
13 |
Correct |
243 ms |
63684 KB |
Output is correct |
14 |
Correct |
35 ms |
44276 KB |
Output is correct |
15 |
Correct |
229 ms |
59964 KB |
Output is correct |
16 |
Correct |
138 ms |
56384 KB |
Output is correct |
17 |
Correct |
215 ms |
60188 KB |
Output is correct |
18 |
Correct |
129 ms |
60520 KB |
Output is correct |
19 |
Correct |
125 ms |
59960 KB |
Output is correct |
20 |
Correct |
132 ms |
61268 KB |
Output is correct |
21 |
Correct |
137 ms |
61524 KB |
Output is correct |
22 |
Correct |
188 ms |
54724 KB |
Output is correct |
23 |
Correct |
157 ms |
53476 KB |
Output is correct |
24 |
Correct |
178 ms |
54520 KB |
Output is correct |
25 |
Correct |
36 ms |
44176 KB |
Output is correct |
26 |
Correct |
91 ms |
48712 KB |
Output is correct |
27 |
Correct |
153 ms |
53120 KB |
Output is correct |
28 |
Correct |
119 ms |
58308 KB |
Output is correct |
29 |
Correct |
142 ms |
61620 KB |
Output is correct |
30 |
Correct |
144 ms |
61124 KB |
Output is correct |
31 |
Correct |
36 ms |
44384 KB |
Output is correct |