zoukankan
html css js c++ java
多源最短路径 Floyd
/* Floyd.h 时间复杂库:O(N^3) 用途: 1.判断中否联通 s[a][b] != inf -> 联通 s[a][b] == inf -> 不联通 2.两点间最短路径长度 s[a][b] != inf -> 最短路径长度 = s[a][b] s[a][b] == inf -> 不联通 3.两点间的最短路径的跳数 初始化时所有路径长度设为单位长度 s[a][b] != inf -> 跳数 = s[a][b] s[a][b] == inf -> 不联通 */ #include <iostream> using namespace std; #define MAX 100 #define inf 0x3FFFFFFF class Floyd { public: int n; //记录两点间最短路径的长度 int s[MAX][MAX]; //记录最短路径 int path[MAX][MAX]; public: Floyd(int size = MAX); void clear(); void ShortestPath(); }; Floyd::Floyd(int size):n(size) { int i, j; for(i = 0; i < n; i++) { for(j = 0; j < n; j++) { if(i = j) s[i][j] = 0; else s[i][j] = inf; path[i][j] = j; } } } Floyd::clear() { int i, j; for(i = 0; i < n; i++) { for(j = 0; j < n; j++) { if(i = j) s[i][j] = 0; else s[i][j] = inf; path[i][j] = j; } } } void Floyd::ShortestPath() { int i,j,k; for(k = 0; k < MAX; k++) { for(i = 0; i < MAX; i++) { for(j = 0; j < MAX; j++) { if(s[i][j] > s[i][k] + s[k][j])) { s[i][j] = s[i][k] + s[k][j]; /*最短路径值*/ path[i][j] = k; /*最短路径*/ } } } } }
查看全文
相关阅读:
JavaScript访问ab页面定时跳转代码
http协议相关-待续
curl发送get和post请求
Java入门——动态网页jsp(jdk下载和配置环境变量)
LeetCode:Best Time to Buy and Sell Stock
LeetCode:Reverse Integer
LeetCode:Same Tree
LeetCode:Single Number II
LeetCode:Single Number
LeetCode:Minimum Depth of Binary Tree
原文地址:https://www.cnblogs.com/windmissing/p/2559881.html
最新文章
js 琐碎
获取验证码倒计时优化 页面刷新实时倒计时
优秀开发习惯
微信开发基础知识记录
hibernate注解 笔记
字符在数据库中所占位数
常用正则表达式记录
Ubuntu环境下OpenCV 安装
待看博客相关转载
C++STL常见面试题
热门文章
C++STL常见面试题1
C++知识点(十)泛型程序设计与C++STL标准模板库
C++知识点(九)模板与群体数据
C++知识点(八)多态性
C++知识点(七)继承与派生导学
C++知识点(六)数组、指针与字符串导学
C++知识点(五)数据共享与保护
JavaScript生成新标签的三个方法(摘抄自留)
设置session生存时间问题
遍历指定目录获得文件名或者文件夹名称,或者两则都要
Copyright © 2011-2022 走看看