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