Skip to content

Commit c398263

Browse files
Update 743. 网络延迟时间.md
1 parent f70036a commit c398263

File tree

1 file changed

+42
-1
lines changed

1 file changed

+42
-1
lines changed

Shortest Path/743. 网络延迟时间.md

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,4 +43,45 @@
4343
* `0 <= wi <= 100`
4444
* 所有 `(ui, vi)` 对都 **互不相同** (即,不含重复边)
4545

46-
---
46+
---
47+
48+
Dijkstra算法 + 堆优化:模板题
49+
50+
```java
51+
class Solution {
52+
public int networkDelayTime(int[][] times, int n, int k) {
53+
final int INF = Integer.MAX_VALUE / 2;
54+
int[] dis = new int[n];
55+
Arrays.fill(dis, INF);
56+
int[][] g = new int[n][n];
57+
for(int i = 0; i < n; i++){
58+
Arrays.fill(g[i], INF);
59+
}
60+
for(int[] time: times){
61+
g[time[0]- 1][time[1] - 1] = time[2];
62+
}
63+
PriorityQueue<int[]> minHeap = new PriorityQueue<>((a,b) -> (a[0] - b[0])); // [distance, node]
64+
dis[k - 1] = 0;
65+
minHeap.add(new int[] {0, k - 1});
66+
while(!minHeap.isEmpty()){
67+
int[] temp = minHeap.poll();
68+
int temp_dis = temp[0], temp_node = temp[1];
69+
if(temp_dis > dis[temp_node]) continue;
70+
for(int i = 0; i < n; i++){
71+
if(g[temp_node][i] != INF){
72+
if(temp_dis + g[temp_node][i] < dis[i]){
73+
minHeap.add(new int[] {temp_dis + g[temp_node][i], i});
74+
dis[i] = temp_dis + g[temp_node][i];
75+
}
76+
}
77+
}
78+
}
79+
int ans = 0;
80+
for(int d: dis){
81+
ans = Math.max(ans, d);
82+
}
83+
return ans == INF ? -1 : ans;
84+
}
85+
}
86+
```
87+

0 commit comments

Comments
 (0)