1238 파티

2019. 6. 26. 14:26알고리즘/백준

정점의 개수가 N=1000으로 플로이드가 가까스로 통과하게 된다. 단순한 계산은 1억번해도 1초 미만이다

시간을 줄일 수 있는 방법은 없나?

플로이드를 사용한 이유는 짧은 코드로 모든 정점간의 최단경로를 구할 수 있었기 때문이다. 구하고자 하는 것을 명확히 한다면 다른 알고리즘으로도 해결할 수 있다는 것이다

이전에 사용했던 다익스트라는 시작점이 하나로 우선순위 큐를 사용했을 때 시간복잡도는 O(NlgE)다. 따라서 모든 정점에 대해서 살펴본다면 O(N^2*lgE)로 거의 N^2에 해결할 수 있어서 시간을 단축시킬 수 있다

 

문제: https://www.acmicpc.net/problem/1238

플로이드: https://github.com/surinoel/boj/blob/master/1238_floyd.cpp

다익스트라: https://github.com/surinoel/boj/blob/master/1238_dijkstra.cpp

'알고리즘 > 백준' 카테고리의 다른 글

2606 바이러스, 모든 최단 경로 알고리즘으로 풀기  (0) 2019.06.26
1389 케빈 베이컨의 6단계 법칙  (0) 2019.06.26
10159 저울  (0) 2019.06.26
1613 역사  (0) 2019.06.26
17264 I AM IRONMAN  (0) 2019.06.26