Задача о деревьях

Дано дерево, представленное в виде списка ребер. Каждое ребро соединяет две вершины, и каждая вершина имеет уникальный идентификатор. Необходимо выполнить несколько операций на дереве, включая поиск расстояния между двумя вершинами и нахождение их общего предка.

Условия задачи:

  • Вводится список ребер, каждое ребро — это пара чисел, обозначающих вершины, которые соединяет данное ребро.
  • Известно, что дерево — это связный ациклический граф.
  • Для каждой пары вершин нужно найти их общий предок.
  • Для каждой пары вершин нужно вычислить расстояние между ними, которое равно числу рёбер на кратчайшем пути между этими вершинами.

Входные данные:

  • Сначала вводится число вершин n.
  • Далее идет n-1 строк, каждая из которых содержит пару чисел, обозначающих вершины, соединенные ребром.

Выходные данные:

  • Для каждой пары вершин необходимо вывести их общий предок и расстояние между ними.

Пример:

Вход:

5
1 2
1 3
3 4
3 5
2 4

Выход:

1 2
1 3

Объяснение:

  • В данном примере дерево состоит из 5 вершин и 4 рёбер. Ответы на запросы о расстоянии и общем предке для каждой пары вершин будут вычисляться на основе структуры дерева.
Оцените статью
Всё о электрике
Не копируйте текст!