17132번 - 두더지가 정보섬에 올라온 이유
에지들의 가중치를 기준으로 내림차순 하여 UNION FIND 하는 방식으로 만족값을 구하는 코드입니다.
UNION을 하면서 만족값을 계산하는데, 어디가 틀린지 어떻게 고쳐야할지 모르겠습니다
고수분들 조언좀 부탁드립니다 ㅠㅠ
제목에 스포 당해서 풀어버렸잖아요 ㅠㅠ 42번 줄에 보시면 착각하기 쉬운데 - 1 하시면 안 됩니다.
죄송합니다 ㅠㅠ 스포되지 않도록 제목 수정했습니다!
그런데 말씀해주신 42번째 줄 -1 부분 이해했고, -1을 제거해서 제출하였는데 틀렸습니다가 발생합니다..
예제에도 맞고, 개인적으로 짜서 돌려도 제대로 나오는데 어디서 문제인걸까요? ㅠㅠ
전체 답 뿐만이 아니라 42번 줄 곱셈도 오버플로우가 날 수 있습니다. 50000짜리 2개를 199로 합친다고 생각해보세요
지금 보니까 제 예제가 틀렸네요 200까지인데 W가
넵 그래서 자료형을 long long 으로 했는데 그래도 오버플로우가 발생할까요? ㅠㅠ
어제 하루종일을 이것만 붙잡고 있었는데, 아직 해결을 못했네요 ㅠㅠㅠㅠ
이 상태에서 진전이 없습니다....
그러니까 곱한 결과 자체가 지금 32비트에 안 들어옵니다.
COUNT[v], COUNT[u], w 모두 long long이 아니고 int라서 계산이 int로 되기 때문에 거기서 오버플로우가 나는 겁니다. 그 이미 틀린 곱셈값이 ANSWER에 더해지고 있는겁니다. 그러면 ANSWER에서 덧셈이 오버플로우가 안 나도 답이 틀리죠.
더하는 자료형이 long long 이면 자동으로 곱하는 값도 long long으로 처리되는줄 알았는데 그게 아니었군요!
조언해주신 덕분에 문제 해결했습니다! 감사합니다! ㅎㅎ 속이 시원하네요
좋은 하루 되세요~!
댓글을 작성하려면 로그인해야 합니다.
sminhyuck 4년 전
에지들의 가중치를 기준으로 내림차순 하여 UNION FIND 하는 방식으로 만족값을 구하는 코드입니다.
UNION을 하면서 만족값을 계산하는데, 어디가 틀린지 어떻게 고쳐야할지 모르겠습니다
고수분들 조언좀 부탁드립니다 ㅠㅠ