idjjm95   2년 전

제가 생각하기에는

특정 경로를 지나는 최단 경로와 dijkstra로부터 구한 start~end까지의 최단거리가

같다면, 최종 후보지로 생각될 수 있다고 생각했습니다.

이 경우에 최단 경로가 많은 경우에도 풀 수 있다고 생각되는데

혹시 왜 33%에서 틀리는지 여쭤볼 수 있을까요?

zenith82114   2년 전

105줄에서 dist의 각 벡터들에 값을 push_back 하므로

112줄의 dist[sed[j]][0]은 언제나 첫 번째 테스트 케이스 때의 값입니다.

idjjm95   2년 전

제가 잘 이해가 안돼서 그런데 ㅠㅜ

그래서 각 케이스가 끝나면 그래프랑 sed를 초기화해 주면서

각 케이스의 dist를 비교해주려고 했는데

혹시

이 부분과는 조금 다른경우인가요??

zenith82114   2년 전

보여주신 코드의 115줄과 117줄 사이에 A코드를 넣고

문제에 있는 예제를 실행하면 B와 같은 결과가 나옵니다.

1번째 테스트 케이스(이하 TC)에서 후보 도착지가 4, 5이므로

4의 dist는 12, 5의 dist는 11이라고 잘 계산되어 들어갔고 답도 맞았습니다.

그러면 이제 이 값들은 더 이상 필요가 없습니다. 그런데...

2번째 TC에서 후보 도착지는 5, 6이므로 5와 6의 dist가 계산되는데

5의 dist는 이번에도 11이고,

dist[5]가 int 변수가 아니라 vector이기 때문에

1번째 TC 때 5의 dist였던 11은 그대로 남아 있고 그 뒤에 이번 TC의 값인 11이 들어가고,

112줄에서 사용하는 dist[5][0]의 값은 지금 계산한 11이 아니라 아까 1번째 TC 때의 11인 것입니다.

이 예제는 정말 운 좋게 통과가 된 거죠.

idjjm95   2년 전

답변 감사합니다!

코드를 다시 한 번 생각해봐야겠습니다!!

정말 감사합니다!

댓글을 작성하려면 로그인해야 합니다.