0266. Дорога в университет

Input file name: paths.in
Output file name: paths.out
Time limit: 2 s
Memory limit: 64 megabytes

В университете учится очень много людей из нашего города. Некоторые из них живут рядом с корпусом, к котором у них идут занятия, а некоторым приходится далеко ехать, чтобы приобщиться к источнику знаний. Иногда транспорт подводит и студенты опаздывают. К сожалению, проблема опаздывающего транспорта не может быть решена математическими методами, поэтому ей мы заниматься не можем. А жаль. Тогда займемся другой проблемой: Пусть весь город представлен своей картой, на которой точками отмечены остановки транспорта, а отрезками, соединяющими точки - какие-то пути между остановками. Понятно, что пересечения и взаимное расположение отрезков на плоскости дела не меняют: выйти из транспорта можно только на остановке. Да, и еще пусть пути между остановками будут направленными, т. е. ехать по ним можно будет только в одну сторону. Теперь пусть заданы 2 остановки: та, с которой студент Петя начинает ехать в университет и та, недалеко от которой университет находится. Петю интересует, сколькими способами он может доехать до университета, причем ездить он может сколько угодно, может проезжать через одну и ту же остановку несколько раз, даже может не выходить на остановке у университета, если ему хочется ездить еще.

Формат входного файла

В первой строке входного файла заданы число N и M - количество остановок в городе и количество путей между остановками (1 ≤ N ≤ 1000, 1 ≤ M ≤ 100000). Далее следует M строк по два числа, которые описывают начало и конец пути от одной остановки до другой (ехать можно только из начала в конец, но не наоборот). Гарантируется, что не будет пути, который соединяет остановку с самой собой. В последней строке даны 2 числа: остановка у Петиного дома и остановка у университета.

Формат выходного файла

Вывести количество путей от дома Пети к университету. Два пути считаются различными, если они различаются количеством либо порядком остановок в них, либо самими остановками, которые в них входят. Если путей бесконечно много необходимо выдать слово "Infinite". Если же путей конечное число, но при этом их больше, чем 2*109, нужно выдать "Too many paths".

Пример:

paths.inpaths.out
3 3 1 2 2 3 1 3 1 3 2


Source: Первенство первокурсника ПетрГУ. Осень 2006.

Discuss       Submit a solution



Printable version