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

陈村建网站广州网站建设 易企建站公司

陈村建网站,广州网站建设 易企建站公司,深圳专业高端网站建设,鹤壁做网站哪家好题目:(来源于AcWing) 给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环, 边权可能为负数。 请你求出 1 号点到 n 号点的最短距离,如果无法从 1 号点走到 n 号点,则输出 impossible。 …

题目:(来源于AcWing)

给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环, 边权可能为负数

请你求出 1 号点到 n 号点的最短距离,如果无法从 1 号点走到 n 号点,则输出 impossible

数据保证不存在负权回路。

输入格式

第一行包含整数 n 和 m。

接下来 m 行每行包含三个整数 x,y,z,表示存在一条从点 x 到点 y 的有向边,边长为 z。

输出格式

输出一个整数,表示 1 号点到 n 号点的最短距离。

如果路径不存在,则输出 impossible

数据范围

1≤n,m≤105,
图中涉及边长绝对值均不超过 10000。

输入样例:
3 3
1 2 5
2 3 -3
1 3 4
输出样例:
2

改进思路:

我们发现,只有一个节点的最短路径被更新之后,这个节点才可能被用来继续更新其出边的节点的最短路径。

代码实现:

 

#include<iostream>
#include<algorithm>
using namespace std;
#include<queue>
int n,m;
const int N = 100010;
int h[N],e[N],ne[N],w[N],idx;
int dist[N];
bool exi[N];//存储队列中是否已经有这个点了void add(int a,int b,int c)
{e[idx] = b;ne[idx] = h[a];w[idx] = c;h[a] = idx++;
}int spfa()
{queue<int> q;q.push(1);dist[1] = 0;exi[1] = true;while(q.size()){int nownode = q.front();q.pop();exi[nownode] = false;//取出该节点后更新exi数组//遍历出边for(int i = h[nownode];i!=-1;i=ne[i]){int tempnode = e[i];if(dist[tempnode] > dist[nownode]+w[i]){dist[tempnode] = dist[nownode]+w[i];if(!exi[tempnode]){q.push(tempnode);//只有本节点最短路被更新了,才需要更新这个节点的出边exi[tempnode] =true;}}}}if(dist[n] ==0x3f3f3f3f) return 0x3f3f3f3f;return dist[n];
}int main()
{fill(h,h+N,-1);//必须在存储边操作前初始化fill(dist,dist+N,0x3f3f3f3f);idx = 0;scanf("%d%d",&n,&m);while(m--){int a,b,c;scanf("%d%d%d",&a,&b,&c);add(a,b,c);}int t = spfa();if(t == 0x3f3f3f3f)cout <<"impossible"<<endl;else cout << t<<endl;return 0;
}

细节:

  1.  需要记录队列中是否已经存在该节点,如果已经存在,即便其被更新,也不用再添加它。

  2. 头指针h[]要在添加边之前初始化为-1.

spfa算法判断负环:

只需要添加数组count[],记录每个节点最短路径,上的边的数量,如果边数>n,说明存在负环。

spfa算法的性能: 

  1. 时间复杂度可以为O(n+m),但最坏时退化为O(nm)。
  2. 可以处理自环、重边、负环、允许边权为负。

 


文章转载自:

http://PiGO4Knr.mftdq.cn
http://dHNxXjTV.mftdq.cn
http://02kE4hvH.mftdq.cn
http://JqnxwyYq.mftdq.cn
http://TRwlGqy5.mftdq.cn
http://YaMEyXOC.mftdq.cn
http://ly68ynOd.mftdq.cn
http://pO28F1s5.mftdq.cn
http://VTPYGG3u.mftdq.cn
http://apdXnvAt.mftdq.cn
http://YjVESFDj.mftdq.cn
http://FMvKK6Ok.mftdq.cn
http://F7sWLjmV.mftdq.cn
http://Ca9TQdEb.mftdq.cn
http://2nRr3mTg.mftdq.cn
http://ayDt052l.mftdq.cn
http://ginVWXka.mftdq.cn
http://JEW84op6.mftdq.cn
http://14tUFQUD.mftdq.cn
http://rYQtdlt1.mftdq.cn
http://u99AFOh3.mftdq.cn
http://9s4Mm8QQ.mftdq.cn
http://yYmMDp9d.mftdq.cn
http://52r1Emlw.mftdq.cn
http://0fdnoioT.mftdq.cn
http://B0ex6lKM.mftdq.cn
http://K1TV8M6W.mftdq.cn
http://TGM6naKP.mftdq.cn
http://tmDIwEvz.mftdq.cn
http://E1BtjvFu.mftdq.cn
http://www.dtcms.com/wzjs/775007.html

相关文章:

  • 石家庄网站做网站上海网站建设 网站制作
  • 老板让做公司网站设计公共资源交易中心总结
  • 游戏网站的设计方案网站智能云
  • 票务网站开发建设网站远达
  • 注册公司网站需要什么资料百度分析工具
  • 重庆广告网站推广雷诺网站群建设
  • 怎样做相亲网站太原优化排名推广
  • 黑色网站后台政务公开及网站建设意见
  • 一级a做爰片免费网站冫36 氪 网站如何优化
  • 网站优化公司电话沈阳响应式网站制作
  • 虞城做网站公司淘宝网站怎么建设的更加好
  • 哪个网站做五金冲压的百度地图排名可以优化吗
  • 网站建设服务哪个便宜淮安市建设工程安全监督站网站
  • 西宁seo网站建设wordpress id重置密码
  • 外贸网站 球衣泰州网站建设工作
  • 网站建设 招聘外贸流程英文版
  • 网站程序深圳建设网站需要多少钱
  • 新手如何制作网站富阳注册公司
  • 下载图片的网站建设关键词优化排名易下拉系统
  • 建设银行校园招聘网站网站模块介绍
  • 网站城市切换如何做免费做封面网站
  • 建立网站需要什么硬件深圳龙岗邮编
  • 南宁百度网站公司营销管理咨询
  • 公司网站空间怎么续费1.0钓鱼网站开发--站点说明
  • 深圳专业网站建设企业全定制网站开发
  • 建造网站做购物网站公司
  • 网站的建设可以起到什么作用是什么意思安徽百度关键词优化
  • iis建站安装wordpress下载软件用哪个软件好
  • 校园网站建设的作用深圳建设局招标网站
  • ftp网站建立怎么看网站后台什么语言做的