kimeun0   6년 전


int로 하고 INF를 1000000000 (1e9)로 하거나

2087654321 로 하면 50%쯤에서 틀리고 long long으로 해야만 맞습니다.


그런데 교통비가 최대 백만이고 경로도 최대 100개인데

최대 길어봐야 int의 max인 10의 9승까지는 안가고 10의 8승이면 전체 경로합이 계산되는데

왜 long long  이 필요할까요?

경로합을 갱신할때도 from의  경로합이 아직 INF면 계산안하기 때문에 INF와 연산식이 있는것도 아닌데...

아무리 생각해도 이해가 잘 안가서 질문올려 봅니다.

namhong2001   5년 전

사이클이 있는 경우 계산값이 무척 작아질 수 있기 때문입니다. 위 코드에서 D[node]가 어느순간 무척 작은 값을 가지게 되었고 D[node] + next_cost - Money[next] 가 오버플로우를 일으켜 무척 큰값이 되는 경우를 생각해 볼 수 있습니다. 이 경우 D[next]는 더이상 업데이트 되지 않고 사이클 검출에 실패하게 됩니다.

isbidip   4년 전

100개의 도시가 순차적으로 100개의 경로로 사이클을 생성하는 경우 100*100*1000000 까지 값이 커질 수 있습니다.

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