ТПУ: основной тур
L. Маршруты для прогулки
Лена живёт в городе, где имеется n перекрёстков, некоторые из которых связаны с помощью m участков двунаправленных дорог. Все перекрёстки пронумерованы целыми последовательными числами от 1 до n.
Каждый день Лена выходит на прогулку и гуляет по некоторому маршруту. Она выбирает пять перекрёстков a, b, c, d и e так, чтобы по участкам дорог можно было пройти по маршруту: a \rightarrow b \rightarrow c \rightarrow a \rightarrow d \rightarrow e \rightarrow a, и гуляет по этом маршруту. Причём символом ‘\rightarrow’ обозначен переход ровно по одному участку дороги.
Лена не хочет дважды гулять по одному и тому же маршруту, поэтому она хочет знать количество различных подходящих маршрутов в городе.
Ваша задача — написать программу, которая по информации о перекрёстках города и соединяющих их участках дорог определит искомое количество подходящих маршрутов.
Первая строка входных данных содержит два целых числа n и m — количество перекрёстков и количество участков дорог соответственно (2 \leqslant n \leqslant 10^{3}, 1 \leqslant m \leqslant 10^{5}).
Далее следует m строк, каждая из которых описывает очередной участок дороги двумя целыми числами u_{i} и v_{i} — номера соединяемых этим участком перекрёстков (1 \leqslant u_{i}, v_{i} \leqslant n, u_{i} \neq v_{i}).
Гарантируется, что каждая пара перекрёстков соединяется не более чем одним участком дороги.
Единственная строка выходных данных должна содержать единственное целое неотрицательное число — искомое количество подходящих маршрутов.
Стандартный ввод | Стандартный вывод |
---|---|
5 8 5 2 1 2 2 3 3 5 3 4 4 1 5 1 4 5 | 16 |
5 4 1 2 2 3 3 4 4 1 | 0 |