그래프의 시작점에서 다른 지점까지의 최단 거리
→ BFS & Dijkstra
| BFS | Dijkstra | |
|---|---|---|
| 간선 가중치 | 1 | ≥ 0 |
| 시간 복잡도 | O(V+E) | O(ElogV) |

dist 배열 초기화 & 자료구조 D에 (start,0) 저장
D에 데이터가 있는 경우
dist[v] < d
(v, d)를 통해 새로운 데이터를 D에 저장

자료구조 D가 비어있는지 확인
private static void dijkstra(int startVertex) {
Queue<Node> queue = new PriorityQueue<>(Comparator.comparingInt(node -> node.distance));
// initMinDistance
for (int i = 1; i <= numberOfVertex; i++) {
minDistance[i] = Integer.MAX_VALUE;
if (i == startVertex) {
minDistance[i] = 0;
}
}
queue.add(new Node(startVertex, 0));
while (!queue.isEmpty()) {
Node node = queue.poll();
int nodeNumber = node.number;
int nodeDistance = node.distance;
if (nodeDistance > minDistance[nodeNumber]) {
continue;
}
for (Node nextNode : adjacencyList[nodeNumber]) {
int nextNodeNumber = nextNode.number;
int newDistance = minDistance[nodeNumber] + nextNode.distance;
if (newDistance >= minDistance[nextNodeNumber]) {
continue;
}
minDistance[nextNodeNumber] = newDistance;
queue.add(new Node(nextNodeNumber, newDistance));
}
}
}