#include <bits/stdc++.h>
#define MASK(i) (1LL << (i))
#define BIT(x, y) (((x) >> (y)) & 1)
#define sz(v) ((ll) (v).size())
#define all(v) (v).begin(), (v).end()
#define uni(v) sort(all(v)), (v).resize(unique(all(v)) - (v).begin())
#define F first
#define S second
#define pii(x, y) make_pair(x, y)
#define __builtin_popcount __builtin_popcountll
#define __builtin_ctz __builtin_ctzll
#define __builtin_clz __builtin_clzll
#define lg(x) (63 - __builtin_clz(x))
template <class X, class Y>
bool minimize(X &x, const Y &y)
{
X eps = 1e-9;
if (x > y + eps) {x = y; return 1;}
return 0;
}
template <class X, class Y>
bool maximize(X &x, const Y &y)
{
X eps = 1e-9;
if (x + eps < y) {x = y; return 1;}
return 0;
}
using namespace std;
typedef long long ll;
const int N = 2e5 + 5;
const int M = 6e5;
const int mod = 998244353;
const int INF = 1e9 + 7;
const ll oo = 2e18;
const double eps = 1e-1;
const long double pi = 2*acos(0.0);
struct edge
{
int u, v, c1, c2;
edge(int _u = 0, int _v = 0, int _c1 = 0, int _c2 = 0)
{
u = _u, v = _v, c1 = _c1, c2 = _c2;
}
int other(int x)
{
return x ^ u ^ v;
}
} e[N];
int n, d[N], pa[N][18];
vector<int> ar[N];
void Input(void)
{
cin >> n;
for (int i = 1; i < n; i ++)
{
int u, v, c1, c2;
cin >> u >> v >> c1 >> c2;
e[i] = edge(u, v, c1, c2);
ar[u].push_back(i);
ar[v].push_back(i);
}
}
void dfs(int u)
{
for (int id : ar[u])
{
int v = e[id].other(u);
if (v != pa[u][0])
{
pa[v][0] = u, d[v] = d[u] + 1;
for (int i = 1; i <= 17; i ++) pa[v][i] = pa[pa[v][i - 1]][i - 1];
dfs(v);
}
}
}
int lca(int u, int v)
{
if (d[u] < d[v]) return lca(v, u);
for (int i = 17; i >= 0; i --)
if (d[u] - MASK(i) >= d[v]) u = pa[u][i];
if (u == v) return u;
for (int i = 17; i >= 0; i --)
if (pa[u][i] != pa[v][i])
{
u = pa[u][i];
v = pa[v][i];
}
return pa[u][0];
}
ll ans = 0;
int sum[N];
void dp(int u)
{
for (int id : ar[u])
{
int v = e[id].other(u);
if (v != pa[u][0])
{
dp(v);
sum[u] += sum[v];
ans += min(1LL * e[id].c1 * sum[v], 1LL * e[id].c2);
}
}
}
void solve(void)
{
dfs(1);
for (int i = 2; i <= n; i ++)
{
int k = lca(i - 1, i);
sum[i] ++;
sum[i - 1] ++;
sum[k] -= 2;
}
dp(1);
cout << ans;
}
int main()
{
std::ios_base::sync_with_stdio(0); cin.tie(0);
//freopen("shipping.inp", "r", stdin);
//freopen("shipping.out", "w", stdout);
int test = 1;
//cin >> test;
while (test --)
{
Input();
solve();
}
return 0;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
11356 KB |
Output is correct |
2 |
Correct |
3 ms |
11356 KB |
Output is correct |
3 |
Correct |
3 ms |
11356 KB |
Output is correct |
4 |
Correct |
3 ms |
11356 KB |
Output is correct |
5 |
Correct |
3 ms |
11356 KB |
Output is correct |
6 |
Correct |
2 ms |
11424 KB |
Output is correct |
7 |
Correct |
3 ms |
11356 KB |
Output is correct |
8 |
Correct |
3 ms |
11356 KB |
Output is correct |
9 |
Correct |
3 ms |
11364 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
64 ms |
24764 KB |
Output is correct |
2 |
Correct |
66 ms |
25904 KB |
Output is correct |
3 |
Correct |
80 ms |
26964 KB |
Output is correct |
4 |
Correct |
93 ms |
28500 KB |
Output is correct |
5 |
Correct |
3 ms |
11356 KB |
Output is correct |
6 |
Correct |
66 ms |
24712 KB |
Output is correct |
7 |
Correct |
44 ms |
21044 KB |
Output is correct |
8 |
Correct |
70 ms |
24632 KB |
Output is correct |
9 |
Correct |
48 ms |
24452 KB |
Output is correct |
10 |
Correct |
50 ms |
24172 KB |
Output is correct |
11 |
Correct |
50 ms |
26708 KB |
Output is correct |
12 |
Correct |
52 ms |
26708 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
11356 KB |
Output is correct |
2 |
Correct |
3 ms |
11356 KB |
Output is correct |
3 |
Correct |
3 ms |
11356 KB |
Output is correct |
4 |
Correct |
3 ms |
11356 KB |
Output is correct |
5 |
Correct |
3 ms |
11356 KB |
Output is correct |
6 |
Correct |
2 ms |
11424 KB |
Output is correct |
7 |
Correct |
3 ms |
11356 KB |
Output is correct |
8 |
Correct |
3 ms |
11356 KB |
Output is correct |
9 |
Correct |
3 ms |
11364 KB |
Output is correct |
10 |
Correct |
64 ms |
24764 KB |
Output is correct |
11 |
Correct |
66 ms |
25904 KB |
Output is correct |
12 |
Correct |
80 ms |
26964 KB |
Output is correct |
13 |
Correct |
93 ms |
28500 KB |
Output is correct |
14 |
Correct |
3 ms |
11356 KB |
Output is correct |
15 |
Correct |
66 ms |
24712 KB |
Output is correct |
16 |
Correct |
44 ms |
21044 KB |
Output is correct |
17 |
Correct |
70 ms |
24632 KB |
Output is correct |
18 |
Correct |
48 ms |
24452 KB |
Output is correct |
19 |
Correct |
50 ms |
24172 KB |
Output is correct |
20 |
Correct |
50 ms |
26708 KB |
Output is correct |
21 |
Correct |
52 ms |
26708 KB |
Output is correct |
22 |
Correct |
82 ms |
20760 KB |
Output is correct |
23 |
Correct |
47 ms |
20340 KB |
Output is correct |
24 |
Correct |
64 ms |
20816 KB |
Output is correct |
25 |
Correct |
3 ms |
11356 KB |
Output is correct |
26 |
Correct |
24 ms |
17000 KB |
Output is correct |
27 |
Correct |
56 ms |
20308 KB |
Output is correct |
28 |
Correct |
52 ms |
23644 KB |
Output is correct |
29 |
Correct |
57 ms |
26684 KB |
Output is correct |
30 |
Correct |
53 ms |
26708 KB |
Output is correct |
31 |
Correct |
3 ms |
11352 KB |
Output is correct |