n = len(lst)
while i < n:
if len(lst[i]) == 1:
lst.pop(i)
n -= 1
else:
i += 1
P1(n, 0) = 1 - sum_{i = 1..n-m} P1(i, 0) - sum_{j>0, PI^j(m) > 0} P1(PI^j(m) + n -m, 0) / (Prob(s[1])*Prob(s[2])*...*Prob(s[PI^j(m)])
PI^j(m)
- это j раз применить префикс функцию к строке. Похожую формулу можно составить для P2(m, k). Этот метод тоже работает за O(nm), но чуть быстрее, потому что более точная оценка O(nl), где l - сколько раз нужно применить префикс функцию к строке, пока не получится пустая 0. Для строки из одних и тех же символов l=m, но обычно сильно меньше. А еще он требует лишь O(n+m) памяти. будет выбран вариант 4+4.
Найдите все вершины с максимальной степенью.Тут вы должны найти, что она такая одна. вершины 4+4 имеют степень 4, что меньше 8, поэтому они не являются вершинами с максимальной степенью. Если бы центральная вершина тоже имела степень 4, то их было бы 3.
А long long - стандартный 64-битный тип.