您的位置:首页 > 其它

leetcode743——Network Delay Time

2018-03-22 13:29 441 查看
题目大意:根据给出的网络图中的边集合,求出从K结点发出消息使得所有结点都接收到的传播时间。
分析:最小路径。用dijkstra算法,算出K点到每个点的最小路径长度,从中选出最大值就能保证所有节点都能够接收到消息。
代码:
class Solution {
public:
int networkDelayTime(vector<vector<int>>& times, int N, int K) {
int map[N + 1][N + 1];
for (int i = 1;i <= N;i++) {
for (int j = 1;j <= N;j++) {
if (i == j) map[i][j] = 0;
else map[i][j] = 10000;
}
}
for (auto time : times) {
int u = time[0];
int v = time[1];
int w = time[2];
map[u][v] = w;
}
int dist[N + 1];
int vis[N + 1];
for (int i = 1;i <= N;i++) {
dist[i] = map[K][i];
vis[i] = 0;
}
vis[K] = 1;
        int ans = -1;
for (int i = 1;i < N;i++) {
int minx = 10000, u = K;
for (int j = 1;j <= N;j++) {
if (!vis[j] && dist[j] != 10000 && dist[j] < minx) {
minx = dist[j];
u = j;
}
}
if (minx == 10000) return -1;
vis[u] = 1;
            ans = max(ans,minx);
for (int j = 1;j <= N;j++) {
if (!vis[j] && map[u][j] != 10000 && dist[j] > dist[u] + map[u][j])
dist[j] = dist[u] + map[u][j];
}
}
return ans;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: