当前位置: 首页 > news >正文

网站是干嘛用的关键词网站建设

网站是干嘛用的,关键词网站建设,英文网站建设图片,谷歌seo外贸推广适用情景Floyd算法适用于多源汇最短路,也就是他问你比如说从3号点到6号点的最短路距离,比如说从7号点到20号点的最短路距离,而不是单源最短路(从1号点到n号点的最短路距离)。在这个算法当中允许负权边的存在。但在求最…

适用情景

  1. Floyd算法适用于多源汇最短路,也就是他问你比如说从3号点到6号点的最短路距离,比如说从7号点到20号点的最短路距离,而不是单源最短路(从1号点到n号点的最短路距离)。在这个算法当中允许负权边的存在。但在求最短路距离当中(包括其他算法也一样)是不能够出现负环的,因为这样最短路距离可能变到负无穷去了


时间复杂度

  1. 三重无脑循环,显然O(N^3)。


算法解释

  1. 首先,对于Floyd算法来说,对于图的存储必须要用邻接矩阵来存,不能用邻接表。然后对于邻接矩阵,一开始当然得初始化,这边必须得注意:由于是图,这个矩阵无论是行还是列,有效位都是从一开始。

int dist[N][N];  //N表示图中点的个数+1
  1. 然后Floyd算法是允许这个图当中存在负权边,但是不能出现负环因为在最短路问题当中的话,一旦出现负环,最短路可能变成负无穷)。然后需要对dist数组初始化,这边再提一句:我们现在已经是默认图当中没有负环,好那么现在如果说存在自环的话,肯定是正的,在最短路当中那就不予考虑,于是在初始化的过程当中,如果说i等于j,直接就是0,其他的话就初始化成正无穷,为什么要正无穷?想想就知道了,等会儿我肯定需要min操作

for (int i=1;i<=n;i++)
{for (int j=1;j<=n;j++){if (i==j){dist[i][j]=0;}else{dist[i][j]=0x3f3f3f3f;}}
}
  1. 然后当往这个邻接矩阵当中去输入一条一条图当中的边的时候,由于我们现在是最短路问题,因此我们只需要取小的就可以了,然后如果是自环的话,所以我们默认是没有负环的,因此取小后就是0

while(m--)
{scanf("%d %d %d",&a,&b,&c);dist[a][b]=MIN(dist[a][b],c);
}
  1. 然后接下来就是执行Floyd算法,其实就是三重循环,外循环k从1到n,第二层循环i从1到n,第三层循环j从1到n。然后每一层循环的话就如下比较一下,至于原理的话,这个是与动态规划有关,像我现在的话也掌握不了,先把算法的步骤先记牢吧

for (int k=1;k<=n;k++)
{for (int i=1;i<=n;i++){for (int j=1;j<=n;j++){dist[i][j]=MIN(dist[i][j],dist[i][k]+dist[k][j]);}}
}
  1. 然后当这三重循环结束之后,原先dist数组是用来存边的,现在他已经像孙悟空变身一样,变成了从i到j的最短距离了。当然也有可能的情况就是从i到j的话是走不到的,这时候还谈个屁最短路啊,那如何去判断走不到的这种情况呢?由于是允许存在负权边的情况,因此当在更新的时候有可能会把这个无穷大的值稍微更新了小了一些,因此不能直接dist[ i ][ j ] 等于 0x3f3f3f3f

while(k--)
{scanf("%d %d",&a,&b);if(dist[a][b]>0x3f3f3f3f/2){printf("impossible\n");}else{printf("%d\n",dist[a][b]);}
}

例题

来源:AcWing

854. Floyd求最短路 - AcWing题库

#include <stdio.h>
#define N 210
#define MIN(a,b) ((a)<(b)?(a):(b))
int dist[N][N];
int main()
{int n,m,k,a,b,c;scanf("%d %d %d",&n,&m,&k);for (int i=1;i<=n;i++){for (int j=1;j<=n;j++){if (i==j){dist[i][j]=0;}else{dist[i][j]=0x3f3f3f3f;}}}while(m--){scanf("%d %d %d",&a,&b,&c);dist[a][b]=MIN(dist[a][b],c);}for (int k=1;k<=n;k++){for (int i=1;i<=n;i++){for (int j=1;j<=n;j++){dist[i][j]=MIN(dist[i][j],dist[i][k]+dist[k][j]);}}}while(k--){scanf("%d %d",&a,&b);if(dist[a][b]>0x3f3f3f3f/2){printf("impossible\n");}else{printf("%d\n",dist[a][b]);}}return 0;
}
http://www.yayakq.cn/news/264411/

相关文章:

  • 厦门论坛网站建设游戏租号网站怎么建设
  • 设计感网站西安推广网络排行
  • 小程序企业网站源码wordpress屏蔽蜘蛛爬虫
  • wordpress分类目录 模版seo提供服务
  • 能接做网站的活的网站手机wap网页设计
  • 网站没服务器行吗大学社团网站建设
  • 企业网站推广名词解释做企业网站需要用到的软件
  • 哈尔滨网站建设流程乐陵森大
  • 怎么给自己的网站更换域名开发者选项在哪里关闭
  • 成成品网站源码有限公司廊坊网站建设的公司
  • 怎么做网站浏览量分析wordpress做301重定向
  • 广州做网站海珠新科wordpress主题里文章添加留言板
  • 厦门网站建设开发内江手机网站建设
  • vscode制作个人网站哈尔滨大型网站制作开发
  • 网站建设人员岗位职责建设网站案例分析
  • 正能量网站大全推广神器
  • 泉州网站建设制作省级精品课程网站
  • 青岛网站制作辰星辰福田建设大型网站建设公司好吗
  • 企事业网站建设名片设计
  • 品牌网站建设服务wordpress内存要求
  • 百度在线做网站中国住房和城乡建设网
  • 免费建站的网站能做影视网站吗做番号网站违法么
  • 包头做网站要多少钱seo是什么简称
  • 做黄金的网站施工员证查询官方网站
  • 邯郸网站建设信息WordPress广告防屏蔽
  • wordpress 侧边悬浮块seo基础教程视频
  • 太原市手机网站建设四川网站建设公司电话
  • wordpress action edit五年级下册数学优化设计答案
  • 外贸网站APP线上获客渠道有哪些
  • 张家港网站建设优化梵客家装