내가 문제가 잘 이해가 안 되었던 것이, 문제에선 i에서 j로 갈 수 없으면 비용과 경로를 그냥 0으로 출력하라고 하는 것인데,
다시 생각해본 결과는 다음과 같다.
1->1로 가는 것은 경로가 1->5->1 이런식으로 존재한다.
하지만 0이 출력 되어있는 것은 자기자신으로 가는 것은 최소비용이 0이므로 그냥 0을 비용으로 보면 될 것 같다. 문제는 경로 부분인데, 경로에도 0이 출력되는 것은 자기자신에서 움직이지 않으니 경로가 없다고 봐도 될 것 같고, 물론 문제에선 i에서 j로 갈 수 없으면 경로를 0으로 출력하라고 되어있어 좀 석연찮은 부분이 있긴 하지만, 일단 i에서 j로 갈 수 없는 경우를 두가지로 나눠보면 좀 해소가 된다.
i에서 j로 갈 수 없는 경우
1. i==j인 경우
2. 그 외의 경우들
그리고 비용 값으로 들어오는 입력은 100000 이하의 자연수! 이므로 0이 들어올리는 없기 때문에, adj[i][j]가 0이거나 INF인 경우 i에서 j로 갈 수 없는 경우로 보면 될 것 같다!
뭔가 막히고 모르겠고 이해 안되는 것이 있으면, 혼자 생각하지말고 그냥 누군가한테 모르는 걸 설명해보는 것 자체도 물어보는 것 자체도 나의 생각을 정리하고 실마리와 깨달음을 얻는 데 도움이 되는 것 같다. 테디베어 효과인가...
추가+) 플로이드 문제를 풀 때 내가 경로가 없는 경우는 0을 출력해주는 부분을 깜박했는데도 맞은 것 같다. 빼머지 말고 꼭 쓰자! 중요!
댓글 없음:
댓글 쓰기