도로 하나 뒤집기 2

각 도로를 지나는 트럭은 많아야 하나일 때, 도로 하나를 뒤집어 S에서 T로 가는 최대 간선 서로소 경로 수가 늘어나는지 판정하고, 새 최댓값과 그 값을 만드는 도로의 개수를 구한다.

어려움9그래프BFS최단 경로구현아직 제출이 없습니다시간 제한8초메모리 제한512 MB

문제

JAG 왕국에는 도시가 NN개 있고, 도시를 잇는 도로는 모두 일방통행이다. 도시에는 1번부터 NN번까지 번호가 붙어 있다. ICPC (International Characteristic Product Corporation)는 매일 도시 SS의 공장에서 도시 TT의 창고로 제품을 옮긴다. 운송에는 트럭 여러 대를 동시에 쓴다. 트럭은 각자 SS에서 출발해 일방통행 도로를 따라 TT에 도착하며, 도중에 다른 도시를 지나도 되고 곧바로 가도 된다. 정체와 사고 위험을 줄이려고 서로 다른 두 트럭이 같은 도로를 지나지 않게 한다.

ICPC는 이 조건에서 트럭을 최대 대수로 굴리고 있고, 매일의 운송을 더 효율적으로 만들고 싶다. ICPC에 재정이 크게 걸려 있는 JAG 왕국은 트럭 대수를 늘리려고 일방통행 도로의 방향을 바꾸는 방안을 검토한다. 도로를 여러 개 뒤집으면 혼란이 커지므로 방향을 바꾸는 도로는 최대 한 개로 정했다.

어떤 도로를 뒤집어도 트럭 대수가 늘지 않으면 도로를 그대로 두면 된다. 도로 하나의 방향을 바꿔서 현재 최대 트럭 대수를 늘릴 수 있는지 판정하라. 늘릴 수 있으면 도로 하나를 뒤집을 수 있을 때 서로 도로를 공유하지 않는 트럭의 최대 대수와, 그 최대 대수를 만들려고 뒤집을 도로로 고를 수 있는 도로의 개수를 구하라.

입력

입력은 여러 개의 데이터 집합으로 이루어진다. 데이터 집합의 수는 100개 이하다.

각 데이터 집합의 형식은 다음과 같다.

N M S T
a1 b1
a2 b2
:
:
aM bM

각 데이터 집합의 첫 줄에는 네 정수가 주어진다. 도시의 수 NN (2N10002 \le N \le 1000), 도로의 수 MM (1M100001 \le M \le 10000), 공장이 있는 도시 SS, 창고가 있는 도시 TT (1S,TN1 \le S, T \le N, STS \ne T)이다.

이어지는 MM개의 줄은 도로 정보다. 그중 ii번째 줄에는 두 정수 aia_ibib_i (1ai,biN1 \le a_i, b_i \le N, aibia_i \ne b_i)가 주어지고, ii번째 도로가 aia_i에서 bib_i로 가는 일방통행임을 뜻한다. 같은 두 도시를 잇는 도로가 여러 개 있어도 되고, 도로는 각각 따로 센다.

입력의 끝은 0 네 개로만 이루어진 줄로 표시된다.

출력

각 데이터 집합마다 두 정수를 공백 하나로 구분해 한 줄에 출력한다. 도로 하나를 뒤집어서 트럭의 최대 대수를 늘릴 수 있으면 첫 번째 정수는 도로를 뒤집은 뒤의 새로운 최대 대수이고, 두 번째 정수는 그 새로운 최대 대수를 만들려고 뒤집을 도로로 고를 수 있는 도로의 개수다. 어떤 도로를 뒤집어도 최대 대수가 늘지 않으면 첫 번째 정수는 현재 최대 대수이고 두 번째 정수는 0이다.