1753번 - 최단경로
맨 처음 인접 리스트로 받아서
스타트 지점에서 거리백터 하나 만들고
중복으로 대기 순위에 쌓이는걸 방지하기 위해서
set에 해야 할 것들을 넣어두고
set내용이 하나도 없을때까지 진행하였는데
왜 시간 초과가 나는것일까요?
set에 원소를 삽입하거나 삭제를 했다면 그 때까지 만들어진 모든 iterator는 무효화가 됩니다. 그대로 사용을 해서는 안 됩니다.
그리고 어떤 시점의 begin에서 시작한 것 이후로 쭉 진행하면서 뽑아오는 것이 아니라, 매번 가장 가까운 거리의 정점을 뽑아와야 합니다. 즉, 매 루프마다 begin()을 불러와야 합니다.
아 가장 가까운 거리 정점부터 탐색 해야 하는거군요
iterator 는 문제 없이 처리 됬었습니다.
다음 걸로 iteraator 옮겨 놓고 그전꺼 삭제하면 문제 없더라구요
아 그러네요. 찾아보니 지워진 iterator만 무효화되는군요.
댓글을 작성하려면 로그인해야 합니다.
sanha93 5년 전
맨 처음 인접 리스트로 받아서
스타트 지점에서 거리백터 하나 만들고
중복으로 대기 순위에 쌓이는걸 방지하기 위해서
set에 해야 할 것들을 넣어두고
set내용이 하나도 없을때까지 진행하였는데
왜 시간 초과가 나는것일까요?