743. 网络延迟时间

vector一/二维数组的定义
C++求最值
迪杰斯特拉算法

//单源最短路径
//BFS单源最短路径适用于无权图
//对于带权图,可以用迪杰斯特拉算法或者Floyd算法求解
//网络延迟时间
#include<iostream>
#include<string>
#include<vector>
#include<unordered_map>
#include<queue>
#include<algorithm>
using namespace std;
//Dijkstra算法
int networkDelayTime(vector<vector<int>>& times, int n, int k) {
const int inf = INT_MAX / 2;
//定义二位数组存储邻接矩阵
vector<vector<int>> g(n, vector<int>(n, inf)); //第一个n是一共n行,第二个vector<int>(n,
//inf)中的n是n列,inf是[i,j]初始化为inf
//初始化邻接矩阵
for (auto &t : times) {
int i = t[0]-1, j = t[1]-1;
g[i][j] = t[2];
}
vector<int> dist(n, inf); //距离数组
dist[k - 1] = 0; //顶点k是起始顶点
vector<bool> used(n, false); //该顶点是否被初始化
for (int i = 0; i < n; i++) {
//寻找最短路径
int x = -1;
for (int j = 0; j < n; j++) {
if (!used[j] && (x==-1 || dist[j] < dist[x])) {
x = j;
}
}
//更新x到其他点的距离
used[x] = true;
for (int j = 0; j < n; j++) {
dist[j] = min(dist[j], dist[x] + g[x][j]);
}
}
//寻找最大值,即延迟时间最长
int result = *max_element(dist.begin(), dist.end());
return result == inf ? -1 : result;
}
int main()
{
vector<vector<int>> times;
int a[3] = {1, 2, 3};
vector<int> v(a, a+3);
times.push_back(v);
int result = networkDelayTime(times, 2, 1);
return 0;
}
posted @   不是孩子了  阅读(16)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
历史上的今天:
2023-01-09 37、商品服务--概念区分---SPU&SKU&规格参数&销售属性
2023-01-09 39、商品服务--品牌管理--JSR303自定义校验注解
2023-01-09 38、商品服务--品牌管理--JSR303分组检验
2023-01-09 37、商品服务--品牌管理--统一异常处理
2023-01-09 36、商品服务--品牌管理--JSR303数据校验
点击右上角即可分享
微信分享提示