class Solution {
public:
int networkDelayTime(vector<vector<int>>& times, int n, int k) {
//第一位维度就是:一个数组
//第二位:表明首,末点和权重
//初始化每一个点
vector<vector<int>> graph(n+1,vector<int>(n+1,1e9));
//先把每一个数据都取出来
for(int i=0;i<times.size();i++){
graph[times[i][0]][times[i][1]]=times[i][2];
}
//拿floyd去做,
for(int k=1;k<=n;k++){
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
graph[i][j]=min(graph[i][j],graph[i][k]+graph[k][j]);
}
}
}
//就是一个多源最短路的过程
//某个节点k去进行,全部都是要去遍历
//从t点开始去进行遍历,从t一下顺向遍历
int res=0;
//序号从0开始
for(int i=1;i<=n;i++){
if(i!=k){
res=max(res,graph[k][i]);
}
}
if(res==1e9){
return -1;
}
return res;
}
};
floyd-习题(leetcode-743)
最新推荐文章于 2024-03-26 08:51:19 发布