LeetCode 網路延遲時間

2022-06-24 09:36:08 字數 1751 閱讀 6440

q:有 n 個網路節點,標記為 1 到 n。

給定乙個列表 times,表示訊號經過有向邊的傳遞時間。 times[i] = (u, v, w),其中 u 是源節點,v 是目標節點, w 是乙個訊號從源節點傳遞到目標節點的時間。

現在,我們向當前的節點 k 傳送了乙個訊號。需要多久才能使所有節點都收到訊號?如果不能使所有節點收到訊號,返回 -1。

注意:n 的範圍在 [1, 100] 之間。

k 的範圍在 [1, n] 之間。

times 的長度在 [1, 6000] 之間。

所有的邊 times[i] = (u, v, w) 都有 1 <= u, v <= n 且 0 <= w <= 100。

a:1.dijkstra(迪傑斯特拉)演算法

//遍歷times填充鄰接表

for (int time : times)

//存放k到各個點的最短路徑,最大的為結果

int distence = new int[n + 1];

arrays.fill(distence, -1);

//初始化k到各個節點的距離

for (int i = 1; i <= n; i++)

//自己到自己為0

distence[k] = 0;

//判斷是否找到k到達該點最短路徑

boolean visited = new boolean[n + 1];

arrays.fill(visited, false);

visited[k] = true;

//遍歷除k本身外所有n-1個結點,遍歷n-1次

for (int i = 1; i <= n - 1; i++)

}//標記最近距離節點被找到

visited[minindex] = true;

//根據剛剛找到的最近節點,更新與其他節點的距離

for (int j = 1; j <= n; j++) }}

int maxdis = 0;

//遍歷最大值,如果有節點未被訪問,返回-1

for (int i = 1; i <= n; i++)

maxdis = math.max(maxdis, distence[i]);

}return maxdis;

}2.floyd(弗洛伊德)演算法

//遍歷所有節點,用k做鬆弛

for (int k = 1; k <= n; k++) else }}

}}int maxdis = 0;

//遍歷k到所有節點的最短路徑的最大值

for (int i = 1; i <= n; i++)

maxdis = math.max(maxdis, graph[k][i]);

}return maxdis;

}

網路延遲時間

有 n 個網路節點,標記為 1 到 n。給定乙個列表 times,表示訊號經過有向邊的傳遞時間。times i u,v,w 其中 u 是源節點,v 是目標節點,w 是乙個訊號從源節點傳遞到目標節點的時間。現在,我們從某個節點 k 發出乙個訊號。需要多久才能使所有節點都收到訊號?如果不能使所有節點收到...

LeetCode 743 網路延遲時間

有 n 個網路節點,標記為 1 到 n。給定乙個列表 times,表示訊號經過有向邊的傳遞時間。times i u,v,w 其中 u 是源節點,v 是目標節點,w 是乙個訊號從源節點傳遞到目標節點的時間。現在,我們向當前的節點 k 傳送了乙個訊號。需要多久才能使所有節點都收到訊號?如果不能使所有節點...

LeetCode 743 網路延遲時間

有 n 個網路節點,標記為 1 到 n。給定乙個列表 times,表示訊號經過有向邊的傳遞時間。times i u,v,w 其中 u 是源節點,v 是目標節點,w 是乙個訊號從源節點傳遞到目標節點的時間。現在,我們從某個節點 k 發出乙個訊號。需要多久才能使所有節點都收到訊號?如果不能使所有節點收到...