1916번 - 최소비용 구하기
결과적으로 이 부분 때문에 여러번 틀렸었는데,
INF 값을 1억을 선언하니까 맞는데, INF값을 계산할때 최대vertex갯수*가중치최댓값으로 계산하는게맞나요?(edge갯수와는 전혀 무관한건지 궁금합니다.)
맞다면 이 문제에서 최대 1억까지 나올수있으니 1억+1로 선언해야되는것 아닌가요?
좀 더 타이트하게 하자면 최악의 경우 이용하게 되는 간선의 수는 (정점의 수) - 1이니까, ((정점의 수) - 1) * (가중치의 최댓값) + 1로 설정하면 맞습니다.
감사합니다~
INT_MAX 나 LLONG_MAX 로 INF 값을 설정하면 편하게 쓸 수 있어요
개인적으로 그 설정은 그다지 좋아하지 않는 편인데, 1이라도 초과하는 순간 오버플로우가 발생할 수 있기 때문에 주의를 해야 하는 경우가 있기 때문입니다.
개인적으로는 두 값을 더하더라도 오버플로우가 나지 않게끔 10억을 조금 넘는 수로 설정하는 것을 선호합니다.
공부하다가 궁금해서그런데, 큰값을 선언해놓는게 오버플로우와 어떤연관이있나요?
INF를 INT_MAX로 해놓으면, 만일 INF로 지정된 값과 다른 양수를 더하는 코드가 있다면 그 즉시 오버플로우가 나게 됩니다.
아아 그걸 말씀하신거구나. 감사합니다.
댓글을 작성하려면 로그인해야 합니다.
jow1025 4년 전
결과적으로 이 부분 때문에 여러번 틀렸었는데,
INF 값을 1억을 선언하니까 맞는데, INF값을 계산할때 최대vertex갯수*가중치최댓값으로 계산하는게맞나요?(edge갯수와는 전혀 무관한건지 궁금합니다.)
맞다면 이 문제에서 최대 1억까지 나올수있으니 1억+1로 선언해야되는것 아닌가요?