모든 도시에서 수도로 가는 경로가 있는 방향 다중 그래프가 주어질 때, 제거하면 어떤 도시에서 수도로 가는 경로가 사라지는 모든 도로 구간을 찾는다.
보통7그래프DFS구현아직 제출이 없습니다시간 제한2초메모리 제한512 MB최근 여러분이 사는 도시에서 비극적인 일이 일어났다. 급히 치료를 받아야 하는 위독한 환자가 주도의 큰 병원으로 옮겨지던 중 숨진 것이다. 도로로 굴러떨어진 바위 때문에 구급차가 길에 갇힌 탓이었다. 주민들이 주지사에게 항의했고, 주지사는 앞으로 비슷한 일이 일어나지 않게 하려고 한다. 안타깝게도 산과 산맥이 많은 이 주에서는 낙석이 매우 흔하다. 그래서 주지사는 낙석이나 다른 뜻밖의 사고로 생기는 비극을 줄이려고 주의 각 도시와 주도 사이에 대체 경로를 만들기로 했다. 이를 위해 먼저 지금 치명적인 도로 구간이 어느 것인지 알아내야 한다. 치명적인 구간이란 그 구간이 막히면 어떤 도시에서 주도로 가는 경로가 하나도 남지 않게 되는 구간이다. 도로 구간은 서로 다른 두 도시를 잇는 도로의 한 부분이다.
치명적인 도로 구간을 모두 찾는 프로그램을 작성하라.
입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스의 첫 줄에는 도시의 수 N(2≤N≤100)과 도로 구간의 수 M(1≤M≤10000)이 주어진다.
다음 N개의 줄에는 도시 이름이 한 줄에 하나씩 주어진다. 도시 이름은 영문 대문자와 소문자로만 이루어지고 길이는 20자 이하이며, 서로 다르다. 이름은 대소문자를 구분한다. 이 중 첫 번째 도시가 주도이다.
그다음 M개의 줄에는 도로 구간이 한 줄에 하나씩 주어진다. 각 줄은 공백 하나로 구분된 두 도시 이름이다. 산 때문에 도로를 짓기 어려워서 많은 도로 구간이 일방통행이며, 각 구간으로는 첫 번째 도시에서 두 번째 도시로만 갈 수 있다. 양방향 구간은 방향이 서로 반대인 일방통행 구간 두 개로 주어진다. 같은 두 도시가 같은 방향으로 여러 번 주어질 수 있는데, 이때 각 줄은 별개의 도로 구간이다.
모든 도시에서 주도로 가는 경로가 적어도 하나 있다고 가정해도 된다. 입력의 끝은 N=M=0인 줄로 나타낸다.
각 테스트 케이스마다 치명적인 도로 구간을 한 줄에 하나씩 출력한다. 각 구간은 공백 하나로 구분된 두 도시 이름으로 나타낸다. 구간은 입력에 주어진 순서대로 출력하고, 각 구간의 두 도시도 입력에 주어진 순서대로 출력한다.
치명적인 구간이 하나도 없으면 Nenhuma라는 단어 하나만 있는 줄을 출력한다. 각 테스트 케이스의 출력 뒤에는 빈 줄을 하나 출력한다.