가중치 최대값 / 가중치 최소값의 비율이 k라면 다익스트라가 O(V + kE)에 된대
방법은 최소 가중치가 a라고 하면 가중치 b인 간선 u -> v에 대해서
b / a = m이면
u -> u1 (가중치 a)
u1 -> u2 (가중치 a)
...
u_(m-1) -> u_m (가중치 a)
u_m -> v (가중치 b - m * a)
식으로 만든다음에 bfs 돌리는거임
이거 백준에 있나? 풀어보고 싶네
가중치 최대값 / 가중치 최소값의 비율이 k라면 다익스트라가 O(V + kE)에 된대
방법은 최소 가중치가 a라고 하면 가중치 b인 간선 u -> v에 대해서
b / a = m이면
u -> u1 (가중치 a)
u1 -> u2 (가중치 a)
...
u_(m-1) -> u_m (가중치 a)
u_m -> v (가중치 b - m * a)
식으로 만든다음에 bfs 돌리는거임
이거 백준에 있나? 풀어보고 싶네
이걸 진짜쓰는데가 있네
k <= 2면 좀 빠를것 같긴 한데...
웨이트 X인 에지를 웨이트 1인 에지 X개로 바꾸는 것과 비슷한 건데 아주 특이해 보이지는 않네.
맞음 구현도 되게 간단함
특이하지 않다는 말이 나오는 이유가
https://www.acmicpc.net/problem/1533
이 문제가 이미 있어서일듯. 근데 이건 행렬곱 문제임
가중치를 단위 크기로 자르면 장점이 큰가?