EduBrick

C. Диаметр взвешенного дерева

2000 мс · 256 МБ · всё или ничего

Найдите наибольшее взвешенное расстояние между двумя вершинами дерева.

Это та же склейка двух лучших спусков, что в классной задаче про путь наибольшего веса, но проще: веса на рёбрах неотрицательны, и обрезать нулём ничего не надо.

down[v]=max⁡(0,max⁡c(down[c]+wc)),ответ=max⁡v(первыйv+второйv)down[v] = \max\bigl(0, \max_c (down[c] + w_c)\bigr), \qquad \text{ответ} = \max_v (\text{первый}_v + \text{второй}_v)

где первый и второй - два наибольших значения down[c]+wcdown[c] + w_c среди детей (или нули, если детей меньше двух).

Диаметр можно найти и двумя обходами в ширину - это короче. Но динамика обобщается: если завтра спросят «диаметр, не проходящий через данную вершину» или «диаметр каждого поддерева», два обхода не помогут, а динамика доработается.

Для дерева из одной вершины ответ ноль.

Формат ввода

В первой строке - число nn (1≤n≤1051 \le n \le 10^5).

В следующих n−1n - 1 строках - тройки vv, uu, ww (0≤w≤1060 \le w \le 10^6).

Формат вывода

Одно число - диаметр дерева.

Примеры

ввод
3
1 2 5
2 3 7
вывод
12
ввод
1
вывод
0
Войдите, чтобы отправлять решения.