Дано дерево с N
вершинами, каждое ребро которого имеет вес 1
. Узлы окрашены в C
цвета. Мы хотим найти для каждого цвета максимальное кратчайшее расстояние между двумя узлами этого цвета.
Я могу построить разреженную таблицу, а затем найти LCA двух узлов в O(log n)
. Затем проверьте все пары одного цвета. Это дает O(n^2 log n)
. Можно ли сделать лучше, чем это?