Ограничения: время – 1s/2s, память – 256MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод
Послать решение Blockly Посылки Темы Где Обсудить (0)
Семантическая сеть — информационная модель предметной области, имеющая вид графа, вершины которого
соответствуют объектам предметной области, а рёбра (дуги) задают отношения между ними. Объектами могут
быть люди, понятия, события, свойства. В этой задаче вам необходимо построить семантическую сеть на основании
информации из СМИ, а затем определить силу семантических связей между некоторыми объектами. Если два объекта
упоминаются вместе в `M` статьях, то будем считать силу прямой семантической связи между этими объектами равной `M`.
Объекты могут быть связаны между собой не только прямо, но косвенно, через другие объекты. В этом случае
силу семантической связи будем рассчитывать как `max_P\ {M(P)}/{L(P)}`,
где `P` – кратчайший путь между объектами, `L(P)` – длина этого пути, `M(P)` – минимальная сила прямых
семантических связей на пути `P`. Если пути между объектами не существует, то сила семантической связи равна 0.
Например, между понятиями elkin и mafia есть два кратчайших пути elkin-sosnovskiy-mafia
(с минимальной силой связи `M(P)=2`) и elkin-bank-mafia (`M(P)=1`). Длина кратчайшего пути `L(P)=2`.
Максимум значения выражения достигается на первом пути: `2//2=1`.
Формат ввода
Первая строка ввода содержит два целых числа: количество статей `N` (`1\ ≤\ N\ ≤\ 1000`) и количество
запросов `Q` (`1\ ≤\ Q\ ≤\ 1000`). В следующих `N` строках содержится от двух до четырех слов, разделенных
пробелами. Каждая строка соответствует одной статье в СМИ и указывает, какие объекты в ней связываются
между собой. Количество объектов не более 2000. Далее следует `Q` строк, содержащих ровно два слова, разделенных
пробелом – запросы на расчет силы семантической связи между объектами. Все слова состоят из строчных
латинских букв, и их длина не превышает 15 букв. Имена объектов в статье или запросе не повторяются.
Формат вывода
Для каждого запроса вывести строку, содержащее одно число – силу семантической связи между объектами с точностью `10^{-6}`.
Пример ввода
6 4
elkin bank sosnovskiy
bank sosnovskiy mafia
bank elkin sosnovskiy
bank elkin
mafia sosnovskiy
sosnovskiy mafia
bank sosnovskiy
bank mafia
elkin mafia
elkin palkin
Вывод для примера
3.000000
1.000000
1.000000
0.000000