743 網路延遲時間

2021-08-20 19:03:05 字數 1189 閱讀 8923

題目:

n

個網路節點,標記為

1

n

給定乙個列表

times,表示訊號經過有向邊的傳遞時間。times[i]= (u, v, w),其中

u

是源節點,v

是目標節點,

w

是乙個訊號從源節點傳遞到目標節點的時間。

現在,我們向當前的節點

k

傳送了乙個訊號。需要多久才能使所有節點都收到訊號?如果不能使所有節點收到訊號,返回

-1

思路:本質上是求單點到所有其他點的最短距離,最後去最短距離中的最大值。

如果有點的值為初始的

max值,就返回

-1;

單點求到其他點的最短距離可以用

dijstra

或者floyd-warshall 

演算法

前者的思路是按層乙個乙個的去遍歷,每次都選取未訪問過的節點加入到佇列中

後者就是遍歷每個邊點關係,遍歷

v-1次

class solution };

vectordist(n + 1, int_max);

dist[k] = 0;

for (auto e : times) edges[e[0]][e[1]] = e[2];

while (!q.empty())

dist[v] = dist[u] + edges[u][v];}}

}}

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

return res == int_max ? -1 : res;

}};

第二種:

class solution }}

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

return res == int_max ? -1 : res;

}};

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 傳送了乙個訊號。需要多久才能使所有節點都收到訊號?如果不能使所有節點...

LeetCode 743 網路延遲時間

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