실행 시간 제한 | 메모리 제한 |
---|---|
1 초 | 128 MB |
과학자 영숙은 갑작스런 눈보라로 외딴 북극 섬에 고립되었고, 그녀의 고향으로 돌아갈 수 있는 모든 경로를 찾고 싶어합니다. 그녀는 보트를 테스트해보았고, 적절한 해류가 두 섬에 흐르는 경우, 한 섬에서 다른 섬으로 1단위의 시간 안에 이동할 수 있음을 알아냈습니다.
그녀는 N(1 <= N <= 100)개의 섬들 사이에 유효한 단방향 경로를 가진 바다 지도를 만들었습니다. 지도에서 각 섬은 1..N으로 번호가 매겨져있습니다. 경로는 해류가 그녀의 보트를 밀어주기 때문에 일방향(단방향)입니다. 두 섬 사이에 서로 다른 해류가 흐르는 경우, 양방향 경로를 가진 경우도 있습니다. 영숙은 지도에 한 섬과 그 섬 자신(즉, 동일한 섬) 사이에 경로를 표시하지 않기 위해 주의했습니다.
그녀의 출발 위치 M(1 <= M <= N)와 지도가 주어진 경우, 영숙에게 어느 섬이 한번 '이동'할 수 있는 거리에 떨어져 있고, 두 번 '이동' 할 수 있는 거리에 떨어져 있는지 등을 판단하는 것을 도와주세요. 영숙이 여러 다른 경로를 선택할 수 있는 경우, 섬에 도달할 수 있는 경우 가장 짧은 거리의 경로만을 고려하세요.
예를 들면, 아래는 N=4인 섬들의 연결 형태를 보여주고 있습니다 (이 예제에서 M=1):
start--> 1-------->2
| |
| |
V V
4<--------3
영숙은 시간 0에서 섬 1을 방문할 수 있습니다 (M=1이기 때문에), 시간 1에 섬 2와 4를 방문할 수 있고, 시간 2에 섬 3을 방문할 수 있습니다.
이 작업의 입력은 행렬 C로서, 행 r, 열 c의 요소를 C_rc (0 <= C_rc <= 1)라고 하며, 그것이 1 값을 가진 경우 '해류는 영숙을 섬 r에서 섬 c로 직접 1시간단위로 이동시킬 수 있음'을 의미합니다. 행 C_r에는 N개의 요소가 있으며 각각은 0 또는 1입니다.
4 1 0 1 0 1 0 0 1 0 0 0 0 1 0 0 0 0
1 2 4 3