hiho_1089_floyd最短路
题目
floyd算法求所有顶点之间的最短路,典型的模板题。唯一需要注意的是两个顶点之间可能有多条边直接相连,在初始化的时候,直接选择最小的长度作为两点间的距离即可。
实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | #include<iostream> #include<stdio.h> #include<algorithm> #include<unordered_map> #include<list> #include<string> #include<string.h> #include<set> using namespace std; int min_dist[105][105]; int main(){ int n, m, u, v, d; scanf( "%d %d" , &n, &m); memset(min_dist, 0x0F, sizeof (min_dist)); for ( int i = 1; i <= n; i++) min_dist[i][i] = 0; for ( int i = 0; i < m; i++){ scanf( "%d %d %d" , &u, &v, &d); if (min_dist[u][v] > d) //可能存在两个点之间有多条直接相连的边,取最小的那一条即可 min_dist[u][v] = min_dist[v][u] = d; } //floyd算法求最短路 for ( int k = 1; k <= n; k++){ for ( int i = 1; i <= n; i++){ for ( int j = 1; j <= n; j++){ if (min_dist[i][j] > min_dist[i][k] + min_dist[k][j]) min_dist[i][j] = min_dist[i][k] + min_dist[k][j]; } } } for ( int i = 1; i <= n; i++){ for ( int j = 1; j <= n; j++) printf( "%d " , min_dist[i][j]); printf( "\n" ); } return 0; } |
标签:
onlinejudge
, 图论
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】凌霞软件回馈社区,携手博客园推出1Panel与Halo联合会员
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次 .NET某旅行社酒店管理系统 卡死分析
· 长文讲解 MCP 和案例实战
· Hangfire Redis 实现秒级定时任务,使用 CQRS 实现动态执行代码
· Android编译时动态插入代码原理与实践
· 解锁.NET 9性能优化黑科技:从内存管理到Web性能的最全指南
· 工良出品 | 长文讲解 MCP 和案例实战
· 一天 Star 破万的开源项目「GitHub 热点速览」
· 多年后再做Web开发,AI帮大忙
· 记一次 .NET某旅行社酒店管理系统 卡死分析
· 别再堆文档了,大模型时代知识库应该这样建