문제 화면에서 "맞은 사람" 선택하시고 공개된 코드를 보시면 됩니다. 더 빠른 수행시간을 가진..
1238번 - 파티
네 그렇게 해서 봤는데 이해가 잘안되서요... ㅠ 제가 질문 방법이 잘못되었는 것 같습니다. 감사합니다.
x에서 모든정점으로 가는 최단거리까지는 이해를 하였습니다.
제가 여기서 간선의 방향을 전부 뒤집는다고 말씀을 하셨는데 이 문제는 단방향으로 알고있는데 뒤집어서 구해도 상관이 없는 건가요?
저는 간선 뒤집는 코드를 보았는데 간선을 뒤집어서 해도 왜 되는지 잘 이해가 안가더라구요...
그리고 항상 댓글 잘 달아주셔서 감사합니다.
djm03178님 답변 감사드립니다.
제가 궁금한것은 1이 시작점 3이 도착점이라 할 경우 1->2, 2->3, 3->1 이런식으로 연결되었다면 1->2->3->1 이런식으로 갈 수 도 있지않나요?
단방향이기 때문에 무조건 뒤집기만하면 연결이 되어있을 수도 있고 안되어 있을 수도 있기 때문에 저는 뒤집는 방법을 이해를 못하겠습니다...
제가 너무 초보라서 이해가 잘 안되는 것 같습니다.
지금 이 풀이는 저 과정을 둘로 쪼개서, 우선 1에서 3으로 가는 경로는 1->2, 2->3입니다. 여기까지가 1에서 3으로 다익스트라를 한 상태입니다.
여기서 경로를 다 뒤집습니다. 그러면 2->1, 3->2, 1->3이라는 경로가 만들어지죠. 그러고 다시 1에서부터 다익스트라를 합니다. 그러면 1->3 이라는 경로가 나오죠. 물론 이건 뒤집어진 경로이기 때문에, 실제로는 3->1인 경로입니다.
둘을 합치면 1->2->3->1 이라는 경로가 나옵니다. 그런데 다익스트라는 한 점에서 모든 점으로의 경로를 구하기 때문에, 이 과정에서 1에서 2로 가는 경로나, 2에서 1로 돌아오는 경로도 함께 구할 수 있습니다.
아... 그러면 다익스트라를 x를 기준으로 한번 시작정점을 기준으로 다익스트라를 할 경우에는 그래프를 뒤집은 다음 다시 시작정점에서 x로 하면
된다는 말씀이시죠??
댓글을 작성하려면 로그인해야 합니다.
skynet0149 6년 전 1