Задача к ЕГЭ по информатике на тему «графы» №1

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

PIC

Заметим, что предложенный граф — дерево. Тогда нас всего лишь просят найти диаметр дерева. Эта задача является известной и разрешима за dfs-ом O(n+ m )  , где n — количество вершин, а m — количество ребер, так как граф является деревом m = n — 1, а асимптотика тогда O (n)  . Однако можно решить задачу и алгоритмом Флойда-Уоршалла за     3 O (n )  . Подробнее можно почитать в статье на codeforces. В нашем случае решение происходит скорее всего руками и за O (n2)  . Ведь для каждой вершины можно за O (n)  подсчитать расстояние до всех вершин, итого сделать это для всех вершин займет O(n2)  операций. Руками это делается довольно быстро. Аналогиченое решение задачи: давайте подвесим дерево за некоторую вершину и будем решать задачу на поддеревьях. Тогда диаметр либо проходит через корень дерева и тогда наибольшее расстояние равно сумме расстояний до двух наиболее удаленных вершин, либо диаметр находится в каком-то поддереве и является уже подсчитанным ответом. Асимптотика решения что руками, что алгоритмом написанном на любом языке программирования O (n )  .

PIC

Ответ: 33
Оцените статью
Я решу все!