저는 처음에 입력을 받을때 가중치를 2배를 default 로하여 여우가 지나갈때, 늑대가 빠르게 갈때는 반으로, 늑대가 느리게 갈때는 2배로 해서 최소 1(2*1/2)배, 최대 4(2*2)배가 되도록 했습니다.
그런데 여기서 지나갈때 걸리는 가중치가 각각 최대 100,000이라고 하고 최대 노드의 개수가 4,000개라고 한 뒤에 모든 길을 늑대가 느리게 간다고 가정한다면 4*100,000*4,000 = 16억 이 나오는데, 이는 int 로 커버할 수 있다고 생각합니다. 그런데 처음엔 int로 제출해서 틀렸다가 long long 으로 바꾸니 되더군요. 왜 그런진 모르겠지만 ㅡㅡ 🤔
제 생각엔 비둘기집 이론(?) 때문에 최단거리로 가는건 한 노드를 한번만 방문하는걸로 알고있는데 혹시 제가 실수한 부분이 있을까요?
------추가-------------
밑의 코드는 정답통과한 코드입니다. (수정함) "이 부분이 int 여도 되지 않을까요?" 라고한 부분은 원래 int 였어요. 제 질문은 저 부분들이 최대 16억일테니 int로 다 표현할 수 있을텐데 왜 int로 하면 틀리고 long long으로 하면 맞나 이걸 질문하는겁니다. 최대 가중치가 16억을 넘을 수 있나요? 이제와서 보니 질문이 좀 이상했네요.
앗 죄송합니다. 새벽 늦은 시간에 질문을 해서 그런지 비몽사몽한 상태로 질문을 해버렸네요.
올린 코드는 정답인 코드입니다. (수정함) "이 부분이 int 여도 되지 않을까요?" 라고한 부분은 원래 int 였어요. 제 질문은 저 부분들이 최대 16억일테니 int로 다 표현할 수 있을텐데 왜 int로 하면 틀리고 long long으로 하면 맞나 이걸 질문하는겁니다. 아마 최대가 16억 이라는 저의 전제가 틀린것 같아서 질문드려요
iron1209 5년 전
저는 처음에 입력을 받을때 가중치를 2배를 default 로하여 여우가 지나갈때, 늑대가 빠르게 갈때는 반으로, 늑대가 느리게 갈때는 2배로 해서 최소 1(2*1/2)배, 최대 4(2*2)배가 되도록 했습니다.
그런데 여기서 지나갈때 걸리는 가중치가 각각 최대 100,000이라고 하고 최대 노드의 개수가 4,000개라고 한 뒤에 모든 길을 늑대가 느리게 간다고 가정한다면 4*100,000*4,000 = 16억 이 나오는데, 이는 int 로 커버할 수 있다고 생각합니다. 그런데 처음엔 int로 제출해서 틀렸다가 long long 으로 바꾸니 되더군요. 왜 그런진 모르겠지만 ㅡㅡ 🤔
제 생각엔 비둘기집 이론(?) 때문에 최단거리로 가는건 한 노드를 한번만 방문하는걸로 알고있는데 혹시 제가 실수한 부분이 있을까요?
------추가-------------
밑의 코드는 정답통과한 코드입니다. (수정함) "이 부분이 int 여도 되지 않을까요?" 라고한 부분은 원래 int 였어요. 제 질문은 저 부분들이 최대 16억일테니 int로 다 표현할 수 있을텐데 왜 int로 하면 틀리고 long long으로 하면 맞나 이걸 질문하는겁니다. 최대 가중치가 16억을 넘을 수 있나요? 이제와서 보니 질문이 좀 이상했네요.