【日常学习】几种常用最短路短发的总结比较

学(fuxi)了一阵子简要总结一下

floyd 全跑一边 点的三次方 100以下都呛 与点有关 无关边数 (可用于求解最小环)

dij裸 点的二次方 每次贪心取最小的松弛

SPFA km k期望2 与边有关 稀疏图最好 搭配边表 最坏情况可能比上面的还慢 唯一可判负环

Bellman-Ford SPFA复杂版 不考虑

dij优化 mlogn 更多与边有关 或许是稠密图的最优解决方案

简而言之 稠密的图用dij的堆优化 稀疏的SPFA 很好写

代码汇总

floyd

floyd传递闭包

dij

SPFA

未完待续

时间: 2024-11-04 12:51:41

【日常学习】几种常用最短路短发的总结比较的相关文章

【日常学习】【条件最短路dij】POJ1062 昂贵的聘礼(2002年浙江省队选拔赛) 题解

耗时三节课 充分体现出粗心酿成大错这个道理 一开始一直不知道为什么数组越界 原来是minn和ninj写反了 后来又因为杜如函数出为题 反复调试 今后一定要注意 题目还是放上吧: 题目描述 Description 年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用10000个金币作为聘礼才答应把女儿嫁给他.探险家拿不出这么多金币,便请求酋长降低要求.酋长说:"嗯,如果你能够替我弄到大祭司的皮袄,我可以只要8000金币.如果你能够弄来他的水晶球,那么只要5

python 基础学习 几种常用数据类型

Python3多了一个集合 Python3 数字(Number)Python3 字符串Python3 列表Python3 元组Python3 字典Python3 集合 Python字符串字符串或串(String)是由数字.字母.下划线组成的一串字符. 加号 + 是列表连接运算符,星号 * 是重复操作.如下实例:python的字串列表有2种取值顺序: 从左到右索引默认0开始的,最大范围是字符串长度少1从右到左索引默认-1开始的,最大范围是字符串开头 如果你要实现从字符串中获取一段子字符串的话,可以

java学习之三种常用设计模式

一.适配器设计模式 简单来说,就是通过一个间接类来选择性的来覆写一个接口 interface Window{ public void open() ; // 打开窗口 public void close() ; // 关闭窗口 public void icon() ; // 最小化 public void unicon() ; // 最大化 } abstract class WindowAdapter implements Window{ public void open(){} public

日常学习随笔-数组、单链表、双链表三种形式实现栈结构的基本操作

一.栈结构 栈(stack)是限制插入和删除只能在一个位置上的表,该位置是 表的末端,叫做栈的顶(Top).对栈的基本操作有push(进栈),pop(出栈),peak(栈顶元素),size(栈容量)等. 栈的核心思想:"先进后出". 二.案例一:数组实现"栈" 1 package com.xfwl.algorithmAnalysis.stack; 2 3 import java.util.Arrays; 4 5 /** 6 * 自定义栈结构(基于数组的形式) 7 *

【OC学习-7】2种常用的对象初始化方法以及方法的具体写法

我们在创建一个新的对象时,用到初始化,但由于这个初始化函数没有特别编写,所以没什么效果,现在我们就来看看这个初始化函数怎么书写. 如果没有经过我们自己的初始化函数赋值的话,那么一般在创建一个对象后,会一个个赋值,如下: #import <Foundation/Foundation.h> #import "ASStudent.h" int main(int argc, const char * argv[]) { @autoreleasepool { ASStudent *

python 学习笔记 14 -- 常用的时间模块之datetime

书接上文,前面我们讲到<常用的时间模块之time>,这次我们学习datetime -- 日期和时间值管理模块 使用apihelper 查看datetime 模块,我们可以看到简单的几项: date       ---  日期对象,结构为date(year, month, day) time       ---  时间值对象,结构为 time([hour[, minute[, second[, microsecond[, tzinfo]]]]]).时间对象所有的参数都是可选的.tzinfo 可以

Android:日常学习笔记(10)———使用LitePal操作数据库

Android:日常学习笔记(10)---使用LitePal操作数据库 引入LitePal 什么是LitePal LitePal是一款开源的Android数据库框架,采用了对象关系映射(ORM)的模式,将平时开发时最常用的一些数据库功能进行了封装,使得开发者不用编写一行SQL语句就可以完成各种建表.増删改查的操作.并且LitePal很"轻",jar包大小不到100k,而且近乎零配置,这一点和Hibernate这类的框架有很大区别.目前LitePal的源码已经托管到了GitHub上. 关

Android:日常学习笔记(7)———探究UI开发(1)

Android:日常学习笔记(7)---探究UI开发(1) 常用控件的使用方法 TextView 说明:TextView是安卓中最为简单的一个控件,常用来在界面上显示一段文本信息. 代码: <TextView android:id="@+id/text_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:text=&qu

一个老师程序员说:这是学Java 必知必会的 20 种常用类库和 API

一个有经验的Java开发人员特征之一就是善于使用已有的轮子来造车.<Effective Java>的作者Joshua Bloch曾经说过:"建议使用现有的API来开发,而不是重复造轮子".在本文中,我将分享一些Java开发人员应该熟悉的最有用的和必要的库和API.顺便说一句,这里不包括框架,如Spring和Hibernate因为他们非常有名,都有特定的功能.最后,如果大家如果在自学遇到困难,想找一个java的学习环境,可以加入我们的java学习圈,点击我加入吧,会节约很多时