강하게 연결된 방향 그래프에서 정해진 두 번의 BFS로 2n개의 간선을 남기고, 남지 않은 간선을 입력 순서대로 출력한다.
어려움8그래프BFS그리디구현아직 제출이 없습니다시간 제한3초메모리 제한512 MB바이트랜드에 어려운 시기가 찾아왔다. 양자 컴퓨팅이 주류가 되면서 큐비트랜드가 바이트랜드를 점령하려 한다. 문제는 바이트랜드에 전쟁을 치를 돈이 부족하다는 것이다. 그래서 바이트랜드의 왕 바이트맨 0x0B는 지출을 줄이려고 도로망을 개편하기로 했다.
바이트랜드에는 도시가 n개 있고, 일방통행 도로 m개가 도시를 잇는다. 이 도로만 써서 어느 도시에서든 다른 모든 도시로 갈 수 있다. 도시 밖에서 교차하는 도로는 없고, 그 밖의 도로도 없다. 도로가 일방통행인 이유는 도로마다 중간에 한쪽 방향으로만 통과하는 차단기가 있기 때문이다. 차단기는 적이 길을 잘못 들었을 때 시간을 낭비하게 만들려고 세웠다.
개편의 목표는 도로 몇 개를 폐쇄해서 정확히 2n개만 남기는 것이다. 왕의 참모들은 2n개면 어느 도시에서든 다른 모든 도시로 갈 수 있는 성질을 지키기에 충분하다고 본다. 더 적어도 되는지는 참모들도 확실히 모른다. 이제 어떤 도로를 폐쇄할지 고르는 일이 남았다.
입력은 여러 개의 테스트 케이스로 이루어진다. 첫 줄에 테스트 케이스의 개수가 주어진다.
각 테스트 케이스의 첫 줄에는 도시의 수 n과 도로의 수 m이 주어진다(n≥4, m>2n). 다음 m개의 줄에는 각각 두 정수 xi와 yi가 주어지고, 도시 xi에서 도시 yi로 가는 도로를 뜻한다(1≤xi,yi≤n, xi=yi). 주어진 도로만 써서 어느 도시에서든 다른 모든 도시로 갈 수 있음이 보장된다. 두 도시 x와 y에 대해 x에서 y로 가는 도로는 많아야 하나이고, y에서 x로 가는 도로도 많아야 하나이다. 답은 항상 존재한다. 한 입력에 들어 있는 모든 테스트 케이스의 m을 더한 값은 100,000을 넘지 않는다.
각 테스트 케이스마다 정확히 m−2n개의 줄을 출력한다. 각 줄에는 폐쇄할 도로의 출발 도시와 도착 도시를 공백 하나로 구분해 출력한다.
폐쇄하는 방법은 여러 가지이므로 다음 규칙으로 정해지는 답만 정답으로 인정한다. 한 테스트 케이스 안에서 도로에 입력에 주어진 순서대로 1번부터 m번까지 번호를 붙인다.