#include <bits/stdc++.h>
using namespace std;
#define X first
#define Y second
typedef pair <int, int> pii;
const int MAXN = 2e5 + 5;
const int LOG = 20;
int n, a, b, c1, c2;
vector <pii> veze[MAXN];
vector <pii> cijene;
int lca[LOG][MAXN];
int dubine[MAXN];
int koliko1[MAXN];
int koliko2[MAXN];
int zbroj[MAXN];
void dfs(int cvor, int roditelj, int dubina) {
dubine[cvor] = dubina;
for (auto ncvor : veze[cvor]) {
if (ncvor.X == roditelj) continue;
dfs(ncvor.X, cvor, dubina + 1);
lca[0][ncvor.X] = cvor;
}
}
int nadi_lca(int a, int b) {
if (dubine[a] < dubine[b]) swap(a, b);
for (int i = LOG; i >= 0; i--) {
if (dubine[a] >= dubine[b] + (1 << i)) {
a = lca[i][a];
}
}
if (a == b) return a;
for (int i = LOG - 1; i >= 0; i --) {
if (lca[i][a] != lca[i][b]) {
a = lca[i][a];
b = lca[i][b];
}
}
return lca[0][a];
}
void rek(int cvor, int roditelj, int cesta) {
for (auto ncvor : veze[cvor]) {
if (ncvor.X == roditelj) continue;
rek(ncvor.X, cvor, ncvor.Y);
zbroj[cvor] += zbroj[ncvor.X];
}
zbroj[cvor] += koliko1[cvor];
if (cesta != -1) koliko2[cesta] = zbroj[cvor];
}
void ispis() {
for (int i = 1; i <= n; i++) {
cout << i << " : ";
for (auto nx : veze[i]) cout << nx.X << " ";
cout << '\n';
}
cout << '\n';
for (int i = 1; i <= n; i++) cout << dubine[i] << " ";
cout << '\n'; cout << '\n';
for (int i = 0; i < 4; i++) {
for (int j = 1; j <= n; j++) {
cout << lca[i][j] << " ";
}
cout << '\n';
}
cout << '\n';
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
cin >> n;
for (int i = 0; i < n - 1; i++) {
cin >> a >> b >> c1 >> c2;
veze[a].push_back({b, i});
veze[b].push_back({a, i});
cijene.push_back({c1, c2});
}
dfs(1, -1, 0);
//ispis();
for (int i = 1; i < LOG; i++) {
for (int j = 1; j <= n; j++) {
lca[i][j] = lca[i - 1][lca[i - 1][j]];
}
}
//ispis();
for (int i = 1; i < n; i++) {
int zajednicki = nadi_lca(i, i + 1);
koliko1[i]++;
koliko1[i + 1]++;
koliko1[zajednicki] -= 2;
}
rek(1, -1, -1);
long long ukupno = 0;
for (int i = 0; i < n - 1; i++) {
ukupno += min((long long)koliko2[i] * cijene[i].X, (long long)cijene[i].Y);
}
cout << ukupno << '\n';
return 0;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
3 ms |
5100 KB |
Output is correct |
2 |
Correct |
4 ms |
5356 KB |
Output is correct |
3 |
Correct |
5 ms |
5484 KB |
Output is correct |
4 |
Correct |
5 ms |
5484 KB |
Output is correct |
5 |
Correct |
5 ms |
5484 KB |
Output is correct |
6 |
Correct |
3 ms |
5228 KB |
Output is correct |
7 |
Correct |
4 ms |
5228 KB |
Output is correct |
8 |
Correct |
4 ms |
5356 KB |
Output is correct |
9 |
Correct |
5 ms |
5484 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
134 ms |
21212 KB |
Output is correct |
2 |
Correct |
138 ms |
22552 KB |
Output is correct |
3 |
Correct |
149 ms |
24316 KB |
Output is correct |
4 |
Correct |
160 ms |
26216 KB |
Output is correct |
5 |
Correct |
5 ms |
5356 KB |
Output is correct |
6 |
Correct |
125 ms |
22596 KB |
Output is correct |
7 |
Correct |
75 ms |
18268 KB |
Output is correct |
8 |
Correct |
136 ms |
22996 KB |
Output is correct |
9 |
Correct |
72 ms |
23632 KB |
Output is correct |
10 |
Correct |
70 ms |
23264 KB |
Output is correct |
11 |
Correct |
76 ms |
24664 KB |
Output is correct |
12 |
Correct |
78 ms |
24924 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
3 ms |
5100 KB |
Output is correct |
2 |
Correct |
4 ms |
5356 KB |
Output is correct |
3 |
Correct |
5 ms |
5484 KB |
Output is correct |
4 |
Correct |
5 ms |
5484 KB |
Output is correct |
5 |
Correct |
5 ms |
5484 KB |
Output is correct |
6 |
Correct |
3 ms |
5228 KB |
Output is correct |
7 |
Correct |
4 ms |
5228 KB |
Output is correct |
8 |
Correct |
4 ms |
5356 KB |
Output is correct |
9 |
Correct |
5 ms |
5484 KB |
Output is correct |
10 |
Correct |
134 ms |
21212 KB |
Output is correct |
11 |
Correct |
138 ms |
22552 KB |
Output is correct |
12 |
Correct |
149 ms |
24316 KB |
Output is correct |
13 |
Correct |
160 ms |
26216 KB |
Output is correct |
14 |
Correct |
5 ms |
5356 KB |
Output is correct |
15 |
Correct |
125 ms |
22596 KB |
Output is correct |
16 |
Correct |
75 ms |
18268 KB |
Output is correct |
17 |
Correct |
136 ms |
22996 KB |
Output is correct |
18 |
Correct |
72 ms |
23632 KB |
Output is correct |
19 |
Correct |
70 ms |
23264 KB |
Output is correct |
20 |
Correct |
76 ms |
24664 KB |
Output is correct |
21 |
Correct |
78 ms |
24924 KB |
Output is correct |
22 |
Correct |
132 ms |
20696 KB |
Output is correct |
23 |
Correct |
107 ms |
18808 KB |
Output is correct |
24 |
Correct |
126 ms |
20308 KB |
Output is correct |
25 |
Correct |
4 ms |
5356 KB |
Output is correct |
26 |
Correct |
41 ms |
11996 KB |
Output is correct |
27 |
Correct |
94 ms |
18244 KB |
Output is correct |
28 |
Correct |
61 ms |
21460 KB |
Output is correct |
29 |
Correct |
84 ms |
25048 KB |
Output is correct |
30 |
Correct |
75 ms |
24532 KB |
Output is correct |
31 |
Correct |
4 ms |
5484 KB |
Output is correct |