도로 하나 뒤집기 2
시간 제한8초메모리 제한512 MB
각 도로를 지나는 트럭은 많아야 하나일 때, 도로 하나를 뒤집어 S에서 T로 가는 최대 간선 서로소 경로 수가 늘어나는지 판정하고, 새 최댓값과 그 값을 만드는 도로의 개수를 구한다.
문제
JAG 왕국에는 도시가 개 있고, 도시를 잇는 도로는 모두 일방통행이다. 도시에는 1번부터 번까지 번호가 붙어 있다. ICPC (International Characteristic Product Corporation)는 매일 도시 의 공장에서 도시 의 창고로 제품을 옮긴다. 운송에는 트럭 여러 대를 동시에 쓴다. 트럭은 각자 에서 출발해 일방통행 도로를 따라 에 도착하며, 도중에 다른 도시를 지나도 되고 곧바로 가도 된다. 정체와 사고 위험을 줄이려고 서로 다른 두 트럭이 같은 도로를 지나지 않게 한다.
ICPC는 이 조건에서 트럭을 최대 대수로 굴리고 있고, 매일의 운송을 더 효율적으로 만들고 싶다. ICPC에 재정이 크게 걸려 있는 JAG 왕국은 트럭 대수를 늘리려고 일방통행 도로의 방향을 바꾸는 방안을 검토한다. 도로를 여러 개 뒤집으면 혼란이 커지므로 방향을 바꾸는 도로는 최대 한 개로 정했다.
어떤 도로를 뒤집어도 트럭 대수가 늘지 않으면 도로를 그대로 두면 된다. 도로 하나의 방향을 바꿔서 현재 최대 트럭 대수를 늘릴 수 있는지 판정하라. 늘릴 수 있으면 도로 하나를 뒤집을 수 있을 때 서로 도로를 공유하지 않는 트럭의 최대 대수와, 그 최대 대수를 만들려고 뒤집을 도로로 고를 수 있는 도로의 개수를 구하라.
입력
입력은 여러 개의 데이터 집합으로 이루어진다. 데이터 집합의 수는 100개 이하다.
각 데이터 집합의 형식은 다음과 같다.
N M S T
a1 b1
a2 b2
:
:
aM bM
각 데이터 집합의 첫 줄에는 네 정수가 주어진다. 도시의 수 (), 도로의 수 (), 공장이 있는 도시 , 창고가 있는 도시 (, )이다.
이어지는 개의 줄은 도로 정보다. 그중 번째 줄에는 두 정수 와 (, )가 주어지고, 번째 도로가 에서 로 가는 일방통행임을 뜻한다. 같은 두 도시를 잇는 도로가 여러 개 있어도 되고, 도로는 각각 따로 센다.
입력의 끝은 0 네 개로만 이루어진 줄로 표시된다.
출력
각 데이터 집합마다 두 정수를 공백 하나로 구분해 한 줄에 출력한다. 도로 하나를 뒤집어서 트럭의 최대 대수를 늘릴 수 있으면 첫 번째 정수는 도로를 뒤집은 뒤의 새로운 최대 대수이고, 두 번째 정수는 그 새로운 최대 대수를 만들려고 뒤집을 도로로 고를 수 있는 도로의 개수다. 어떤 도로를 뒤집어도 최대 대수가 늘지 않으면 첫 번째 정수는 현재 최대 대수이고 두 번째 정수는 0이다.