最短路

最短路顾名思义就是在有向连通图(也就是连通网)中寻找两点之间的最短距离。

处理方法有很多,今天就来讲解dijkstra算法和floyed算法

dijkstra算法

(单源最短路:求一个点到其他点的最短路)

时间复杂度:O(n^2)

设起点为s,dis[v]表示从s到v的最短路径的长度

①初始化:dis[s]=0;dis[v]= (无穷可设置为0x3f)

1、在没有被访问过的点中找一个顶点u使得dis[u]是最小的

2、u标记为已确定的最短路径

3、用for遍历与u相连的每个未确定最短路径的顶点v

if(dis[u]+w[u][v]<dis[v])
{
    dis[v]=dis[u]+w[u][v];
}

    dis[s]=0;q.push(make_pair(0,s));//起点到起点的距离为零,s为下标 while(!q.empty())//队列为空 { int x=q.top().second;q.pop();//取出堆顶if(visit[x]) continue;visit[x]=1;//已做为过起点for(int i=head[x];i!=0;i=edge[i].next)//链式前向星搜边{int y=edge[i].to;if(!visit[y]&&dis[y]>dis[x]+edge[i].wei){dis[y]=dis[x]+edge[i].wei;//更新操作q.push(make_pair(-dis[y],y));} }}

floyed算法

多源最短路: 求任意两个点的最短路

Floyd算法是基于动态规划的,对于每一个k,我们都判断 d[i][j] 是否大于 d[i][k] + d[k][j],如果大于,就可以更新d[i][j]了。

void floyd()
{for(int k=1; k<=n; k++)for(int i=1; i<=n; i++)for(int j=1; j<=n; j++)d[i][j] = min(d[i][j], d[i][k] + d[k][j]);
}

最短路(dijkstrafloyed)相关推荐

  1. [C] [最短路] 只有5行的算法:Floyd-Warshall

    终于学到求最短路了,终于来到我最喜欢的算法--Floyd-Warshall了!今天还有点小激动呢! 我喜欢它,当然是因为它逻辑十分简单咯!真的只有5行诶! Floyd-Warshall算法 题目描述 ...

  2. BZOJ4152 AMPPZ2014 The Captain(最短路)

    事实上每次走到横坐标或纵坐标最接近的点一定可以取得最优方案.于是这样连边跑最短路就可以了. #include<iostream> #include<cstdio> #inclu ...

  3. Codeforces.1051F.The Shortest Statement(最短路Dijkstra)

    题目链接 先随便建一棵树. 如果两个点(u,v)不经过非树边,它们的dis可以直接算. 如果两个点经过非树边呢?即它们一定要经过该边的两个端点,可以直接用这两个点到 u,v 的最短路更新答案. 所以枚 ...

  4. BZOJ1491: [NOI2007]社交网络(Floyd 最短路计数)

    Time Limit: 10 Sec  Memory Limit: 64 MB Submit: 2343  Solved: 1266 [Submit][Status][Discuss] Descrip ...

  5. HDU1811 Rank of Tetris 拓扑排序+并查集 OR 差分约束最短路+并查集

    题目链接 题意:就是给你一堆关系,看能不能排出个确定的顺序 做法: 1. 拓扑排序+并查集 应该很容易想到的一种思路,大于小于建立单向边.对于相等的呢,就把他们缩成一个点.就用并查集缩成一个点就行了 ...

  6. E:By Elevator or Stairs? CF595 DP最短路

    题目链接 比赛的时候一看,这不是最短路吗,然后敲了一个最短路. 然后比赛完发现大家基本都写的dp,我真是个憨憨,dp3行 最短路就建个简单的图,dp就是从上一维转化过来就是了 优秀的dp: //#pr ...

  7. The Shortest Statement CodeForces - 1051F LCA+最短路

    太弱了... 一开始看到题感觉是跑一个最小生成树在上边进行LCA就行了,但是发现过不了样例,然后就是就想到了之前做过类似做法的题目,就是非生成树上的边最多只有21条,然后就那些边记录下来,通过每一条边 ...

  8. JZOJ #4722 跳楼机 (最短路模型的完美转化)

    题目描述: 给出$h,x,y,z$,求在$h$以内,$x,y,z$可以凑出多少个不同的数.$(1\leq{h}\leq{10^{18}},1\leq{x,y,z}\leq{10^5})$ 解题思路: ...

  9. matlab单机无限大系统_基于MATLAB的单机无穷大系统短路故障分析_吕鹏

    _______________________________电子技术__丝I 基于MA丁LAB的单机无穷大系统短路故障分析 山东科技大学吕鹏钟家成纪妮妮李漫漫 [摘要]本z l),NIATLAB7. ...

最新文章

  1. 黑客之王!韩国神童登顶黑客界的“极限挑战”
  2. 【云和恩墨大讲堂】Oracle线上嘉年华第二讲
  3. oracle 11g中密码过期问题
  4. 你不知道的事---SringCloud的feign的继承特性
  5. 关于收到部分还款SAP系统两种处理方法的说明和比较
  6. antd 能自适应吗_自首要满足的条件有哪些,自首能从宽处罚吗?
  7. git tag和branch的区别
  8. Educational Codeforces Round 96 E. String Reversa 线段树模拟序列交换
  9. [转]JQuery.Ajax之错误调试帮助信息
  10. 【Docker】elasticsearch 监控工具 elasticsearch-HQ
  11. vim java自动补全_java – eclim没有在vim中做自动完成
  12. 怎么在cmd中安装python库_cmd中安装python库时出现的错误
  13. 3.数据结构 --- 栈和队列
  14. v$session,v$session_wait,v$session_wait_history,v$active_session_history
  15. 【逗老师带你学IT】PRTG、Zabbix通过API监控深信服VDC和VMP云桌面运行状态
  16. 【深入理解JS核心技术】1.在 JavaScript 中创建对象的可能方式有哪些?
  17. 【数据库】数据字典表
  18. android常用词汇带音标,高中那个背英语单词的APP好3500乱序带音标_背单词安卓软件...
  19. Muli3D 2 matMatrix44RotationQuaternion 函数 (四元数转矩阵)
  20. AI学习_线程_python爬虫_numpy

热门文章

  1. 计算机主板有什么要求,电脑主板的大小有什么影响?
  2. 【vue】canvas图片剪切
  3. 暗黑破坏神:不朽 unity mmo arpg资源分包精讲
  4. 横版java_Project4 自己用java写的横版格斗游戏 功能还不是很复杂 可以作为参考~ Other Games 其他 238万源代码下载- www.pudn.com...
  5. vs2013 码云_2013年云计算会议
  6. 【网络】UCX(Unified Communication X )|统一抽象通信接口
  7. 购物车存储在什么位置比较合适?Session?Cookie?数据库?
  8. win10连接wifi问题:无法连接到此网络,怎么解决?
  9. 2020你与字节跳动只差这份笔记,我靠着这份笔记,工资从15K到了40K!(开发5年)
  10. Android-skin-support换肤框架使用指南