자전거 경주 경로 세기

시간 제한1초메모리 제한128 MB

요약
1번 마을에서 2번 마을로 가는 경로 수를 구하되, 마지막 9자리만 출력하고 사이클로 무한대가 되면 inf를 출력하는 문제입니다.
난이도

보통10점 중 6점

유형
위상 정렬, 동적 계획법, 그래프
정답자
아직 제출이 없습니다

문제

1번부터 N번까지 번호가 붙은 N개의 마을이 있고, 마을 사이에는 M개의 일방통행 도로가 있다. 이 나라에서는 자전거 경주를 열려고 한다. 경주는 반드시 1번 마을에서 시작해서 2번 마을에서 끝나야 한다.

가능한 경주 경로의 수를 구하라. 같은 두 마을 사이에 여러 도로가 있을 수 있으며, 서로 다른 도로를 사용하면 서로 다른 경로로 센다. 어떤 순환 구조 때문에 1번 마을에서 2번 마을까지 갈 수 있는 경로가 무한히 많아질 수도 있다.

입력

첫째 줄에 마을의 수 N과 도로의 수 M이 주어진다. (2 <= N <= 10,000, 1 <= M <= 100,000)

다음 M개 줄에는 도로의 정보를 나타내는 두 정수 A와 B가 주어진다. 이는 A번 마을에서 B번 마을로 가는 일방통행 도로를 의미한다.

같은 두 마을 사이에 도로가 하나 이상 존재할 수 있다.

출력

첫째 줄에 가능한 자전거 경주 경로의 수를 출력한다. 경로의 수가 9자리를 넘어가면 마지막 9자리만 출력한다. 이때 앞자리가 0이면 9자리가 되도록 0을 포함해서 출력한다.

경로의 수가 무한대이면 inf를 출력한다.

예제3

  1. 예제 1

    입력
    6 7
    1 3
    1 4
    3 2
    4 2
    5 6
    6 5
    3 4
    
    예상 출력
    3
    
  2. 예제 2

    입력
    6 8
    1 3
    1 4
    3 2
    4 2
    5 6
    6 5
    3 4
    4 3
    
    예상 출력
    inf
    
  3. 예제 3

    입력
    31 60
    1 3
    1 3
    3 4
    3 4
    4 5
    4 5
    5 6
    5 6
    6 7
    6 7
    7 8
    7 8
    8 9
    8 9
    9 10
    9 10
    10 11
    10 11
    11 12
    11 12
    12 13
    12 13
    13 14
    13 14
    14 15
    14 15
    15 16
    15 16
    16 17
    16 17
    17 18
    17 18
    18 19
    18 19
    19 20
    19 20
    20 21
    20 21
    21 22
    21 22
    22 23
    22 23
    23 24
    23 24
    24 25
    24 25
    25 26
    25 26
    26 27
    26 27
    27 28
    27 28
    28 29
    28 29
    29 30
    29 30
    30 31
    30 31
    31 2
    31 2
    
    예상 출력
    073741824