#include <bits/stdc++.h>
using namespace std;
//
const int maxN = 2e5 + 5;
//
int N, A, B;
int h[maxN], up[20][maxN];
int vertex[maxN], edge[maxN];
long long ans, C1[maxN], C2[maxN];
vector<pair<int, int>> adj[maxN];
//
void DFS_1 (int u = 1)
{
for (auto [id, v] : adj[u])
{
if (v == up[0][u])
continue;
h[v] = h[u] + 1;
up[0][v] = u;
for (int i = 1; i < 20; ++i)
up[i][v] = up[i - 1][up[i - 1][v]];
DFS_1(v);
}
}
int LCA (int u, int v)
{
if (h[u] != h[v])
{
if (h[u] < h[v])
swap(u, v);
for (int k = h[u] - h[v], i = 0; (1 << i) <= k; ++i)
if (k >> i & 1)
u = up[i][u];
}
if (u == v)
return u;
for (int i = __lg(h[v]); i >= 0; --i)
if (up[i][u] != up[i][v])
u = up[i][u],
v = up[i][v];
return up[0][v];
}
void DFS_2 (int u = 1)
{
int index = 0;
//
for (auto [id, v] : adj[u])
if (v == up[0][u])
index = id;
else
DFS_2(v),
vertex[u] += vertex[v];
edge[index] = vertex[u];
}
//
void process (void)
{
cin >> N;
for (int i = 1; i < N; ++i)
{
cin >> A >> B >> C1[i] >> C2[i];
adj[A].emplace_back(i, B);
adj[B].emplace_back(i, A);
}
DFS_1();
for (int i = 1; i < N; ++i)
{
++vertex[i];
++vertex[i + 1];
vertex[LCA(i, i + 1)] -= 2;
}
DFS_2();
for (int i = 1; i < N; ++i)
ans += min(C1[i] * edge[i], C2[i]);
cout << ans;
}
//
signed main (void)
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr), cout.tie(nullptr);
process();
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci8vCmNvbnN0IGludCBtYXhOID0gMmU1ICsgNTsKLy8KaW50IE4sIEEsIEI7CmludCBoW21heE5dLCB1cFsyMF1bbWF4Tl07CmludCB2ZXJ0ZXhbbWF4Tl0sIGVkZ2VbbWF4Tl07CmxvbmcgbG9uZyBhbnMsIEMxW21heE5dLCBDMlttYXhOXTsKdmVjdG9yPHBhaXI8aW50LCBpbnQ+PiBhZGpbbWF4Tl07Ci8vCnZvaWQgREZTXzEgKGludCB1ID0gMSkKewogICAgZm9yIChhdXRvIFtpZCwgdl0gOiBhZGpbdV0pCiAgICB7CiAgICAgICAgaWYgKHYgPT0gdXBbMF1bdV0pCiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIGhbdl0gPSBoW3VdICsgMTsKICAgICAgICB1cFswXVt2XSA9IHU7CiAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPCAyMDsgKytpKQogICAgICAgICAgICB1cFtpXVt2XSA9IHVwW2kgLSAxXVt1cFtpIC0gMV1bdl1dOwogICAgICAgIERGU18xKHYpOwogICAgfQp9CmludCBMQ0EgKGludCB1LCBpbnQgdikKewogICAgaWYgKGhbdV0gIT0gaFt2XSkKICAgIHsKICAgICAgICBpZiAoaFt1XSA8IGhbdl0pCiAgICAgICAgICAgIHN3YXAodSwgdik7CiAgICAgICAgZm9yIChpbnQgayA9IGhbdV0gLSBoW3ZdLCBpID0gMDsgKDEgPDwgaSkgPD0gazsgKytpKQogICAgICAgICAgICBpZiAoayA+PiBpICYgMSkKICAgICAgICAgICAgICAgIHUgPSB1cFtpXVt1XTsKICAgIH0KICAgIGlmICh1ID09IHYpCiAgICAgICAgcmV0dXJuIHU7CiAgICBmb3IgKGludCBpID0gX19sZyhoW3ZdKTsgaSA+PSAwOyAtLWkpCiAgICAgICAgaWYgKHVwW2ldW3VdICE9IHVwW2ldW3ZdKQogICAgICAgICAgICB1ID0gdXBbaV1bdV0sCiAgICAgICAgICAgIHYgPSB1cFtpXVt2XTsKICAgIHJldHVybiB1cFswXVt2XTsKfQp2b2lkIERGU18yIChpbnQgdSA9IDEpCnsKICAgIGludCBpbmRleCA9IDA7CiAgICAvLwogICAgZm9yIChhdXRvIFtpZCwgdl0gOiBhZGpbdV0pCiAgICAgICAgaWYgKHYgPT0gdXBbMF1bdV0pCiAgICAgICAgICAgIGluZGV4ID0gaWQ7CiAgICAgICAgZWxzZQogICAgICAgICAgICBERlNfMih2KSwKICAgICAgICAgICAgdmVydGV4W3VdICs9IHZlcnRleFt2XTsKICAgIGVkZ2VbaW5kZXhdID0gdmVydGV4W3VdOwp9Ci8vCnZvaWQgcHJvY2VzcyAodm9pZCkKewogICAgY2luID4+IE47CiAgICBmb3IgKGludCBpID0gMTsgaSA8IE47ICsraSkKICAgIHsKICAgICAgICBjaW4gPj4gQSA+PiBCID4+IEMxW2ldID4+IEMyW2ldOwogICAgICAgIGFkaltBXS5lbXBsYWNlX2JhY2soaSwgQik7CiAgICAgICAgYWRqW0JdLmVtcGxhY2VfYmFjayhpLCBBKTsKICAgIH0KCiAgICBERlNfMSgpOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPCBOOyArK2kpCiAgICB7CiAgICAgICAgKyt2ZXJ0ZXhbaV07CiAgICAgICAgKyt2ZXJ0ZXhbaSArIDFdOwogICAgICAgIHZlcnRleFtMQ0EoaSwgaSArIDEpXSAtPSAyOwogICAgfQogICAgREZTXzIoKTsKICAgIGZvciAoaW50IGkgPSAxOyBpIDwgTjsgKytpKQogICAgICAgIGFucyArPSBtaW4oQzFbaV0gKiBlZGdlW2ldLCBDMltpXSk7CgogICAgY291dCA8PCBhbnM7Cn0KLy8Kc2lnbmVkIG1haW4gKHZvaWQpCnsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZShudWxscHRyKSwgY291dC50aWUobnVsbHB0cik7CiAgICBwcm9jZXNzKCk7Cn0K