import
java.util.ArrayList;
import
java.util.List;
class
Main {
static
int
dfs(List<List<Pair>> g, List<Integer> vis,
List<Integer> count,
int
n,
int
vrtx,
int
[] ans) {
vis.set(vrtx,
1
);
count.set(vrtx,
1
);
for
(Pair child : g.get(vrtx)) {
int
cv = child.first;
int
wt = child.second;
if
(vis.get(cv) ==
0
) {
count.set(vrtx, count.get(vrtx) + dfs(g, vis, count, n, cv, ans));
int
x = count.get(cv);
int
y = n - x;
ans[
0
] += Math.min(x, y) *
2
* wt;
}
}
return
count.get(vrtx);
}
public
static
void
main(String[] args) {
int
N =
4
;
List<List<Integer>> roads =
new
ArrayList<>();
roads.add(List.of(
1
,
2
,
3
));
roads.add(List.of(
2
,
3
,
2
));
roads.add(List.of(
4
,
3
,
2
));
List<List<Pair>> g =
new
ArrayList<>();
for
(
int
i =
0
; i <= N; i++) {
g.add(
new
ArrayList<>());
}
for
(List<Integer> road : roads) {
int
u = road.get(
0
);
int
v = road.get(
1
);
int
w = road.get(
2
);
g.get(u).add(
new
Pair(v, w));
g.get(v).add(
new
Pair(u, w));
}
List<Integer> vis =
new
ArrayList<>(N +
1
);
for
(
int
i =
0
; i <= N; i++) {
vis.add(
0
);
}
List<Integer> count =
new
ArrayList<>(N +
1
);
for
(
int
i =
0
; i <= N; i++) {
count.add(
0
);
}
int
[] ans = {
0
};
dfs(g, vis, count, N,
1
, ans);
System.out.println(ans[
0
]);
}
}
class
Pair {
int
first, second;
public
Pair(
int
first,
int
second) {
this
.first = first;
this
.second = second;
}
}