Задача Upgrade
Как в любом большом городе, в нашем достаточно много школ, каждая имеет свой сервер. Некоторые из них соединены между собой каналами двусторонней прямой связи. Каждый из каналов соединяет непосредственно 2 школы, любые две школы соединены не более, чем одним каналом. Образование не имеет достаточно средств, потому к каждой школе ведет не более двух каналов. В процессе работы информация передается с сервера-«отправителя» на сервер– «получатель» через некоторые из наявных каналов, причем неважно, через какие. Но многие из существующих каналов обустроены давно и не предназначены для передачи информации с большой скоростью. Наша лаборатория приняла решенние заменить часть каналов оптоволоконными таким образом: если информация могла попадать с сервера A на сервер B, то теперь она сможет пройти с А на В через оптоволоконные каналы. Конечно, оптическое волокно стоит дорого, потому мы хотим заменить минимальное количество старых «медных» каналов на новые оптоволоконные, а избыточные «медные» законсервировать. Понятно, что каждый сервер умеет, как и ранее, «роутить» информацию, то есть пропускать ее далее, если существует канал связи.
Очень хочется знать, сколько существует разных способов замены минимального количества каналов. Два способа считаются разными, если существует канал, который заменили в одном из способов, и не заменили в другом. Помогите нам.
Технические условия. Программа UPGRADE читает с клавиатуры 2числа n і m (1<=n<=105 0<=m<=105) – количество школ и количество каналов соответственно. Далее программа читает вm строках каналы, по одному в строке. Каждый канал задан двумя целыми числами Аі и Ві (1<= Аі, Ві <=n, Аі<>Ві) – номера школ, которые соединяет канал с номером і. Гарантировано, что каждый канал задан не более одного раза. Программа выводит на экран одно единственное число – количество способов замены. Поскольку число может быть достаточно большим, выводить нужно по модулю 109+7(то есть - остаток от деления на это число).
Примеры
Ввод
5 4
1 2
2 3
1 3
4 5
|
Вывод
3
|
Ввод
2 1
1 2
|
Вывод
1
|
Комментарий к примеру. Существует три способа замены каналов:
{1,2,4},{1,3,4},{2,3,4}
|
|