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; /*最短路径*/ } } } } }
查看全文
相关阅读:
大公司?小公司?
git 学习笔记
django学习笔记
web servieces 学习小栗子
python列表推导式
什么叫事务,事务的特性
监听问题汇总
oracle数据库导入导出
ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务--解决办法(转)
目标修正
原文地址:https://www.cnblogs.com/windmissing/p/2559881.html
最新文章
正则
div里多行文字溢出隐藏
css 画弧度
【公益线上自习室】不连麦,无微信群,无qq群
【python代码】加变量打印
【python代码】随机选菜(做决定)
【python代码】猜年龄
关于英语学习不吐不快的想法
瑞克和莫蒂|S3E03 Rick为什么要把自己变成一根腌黄瓜?
org.apache.log4j.Logger详解
热门文章
使用java.text.SimpleDateFormat类进行文本日期和Date日期的转换
MapReduce:详解Shuffle过程
scala中的高阶函数
scala抽象类
安装hive和安装mysql
zookeeper的安装和配置
动态添加一个节点
SSH免密码互联
hadoop的分布式安装过程
HashSet的特性
Copyright © 2011-2022 走看看