여행 계획 세우기

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

요약
방향 그래프에서 도시와 경로를 여러 번 다시 이용할 수 있을 때, S에서 T까지 가는 동안 방문 가능한 서로 다른 도시의 최대 개수를 구합니다.
난이도

어려움10점 중 8점

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

문제

바쁜 일상에서 벗어나 휴가를 떠나려는 태희는 사전 조사를 통해 여행할 도시 NN개를 골랐다. 처음에는 비행기만 이용하면 충분히 모든 일정을 세울 수 있다고 생각했지만, 모든 도시 쌍 사이에 항공편이 있는 것은 아니라는 사실을 알게 되었다.

조사 결과 총 MM개의 항공로가 있으며, 각 항공로는 한 방향으로만 이동할 수 있다. 태희는 SS번 도시에서 출발해 TT번 도시에서 여행을 마치려고 한다.

도시와 항공로 정보가 주어졌을 때, SS번 도시에서 TT번 도시로 이동하는 여행 중 방문할 수 있는 서로 다른 도시의 최대 개수를 구하라. 같은 도시는 여러 번 방문해도 한 번만 센다. 각 도시는 여러 번 방문할 수 있고, 같은 항공로도 여러 번 이용할 수 있다.

입력

첫째 줄에 네 정수 NN, MM, SS, TT가 주어진다. (1≤N≤10 000, 1≤M≤100 000, 1≤S,T≤N)(1 \le N \le 10\,000,\ 1 \le M \le 100\,000,\ 1 \le S,T \le N)

다음 MM개의 줄에는 항공로 하나를 나타내는 서로 다른 두 정수 AA, BB가 주어진다. (1≤A,B≤N, A≠B)(1 \le A,B \le N,\ A \ne B) 이는 AA번 도시에서 BB번 도시로 이동하는 항공로가 있음을 뜻한다.

출력

첫째 줄에 방문할 수 있는 서로 다른 도시의 최대 개수를 출력한다. 목표대로 SS번 도시에서 TT번 도시까지 이동할 수 없다면 0을 출력한다.

예제1

  1. 예제 1

    입력
    3 4 1 1
    1 2
    2 3
    3 2
    2 1
    
    예상 출력
    3