hdu 1874 畅通工程续(最短路spfa邻接矩阵)
来源:互联网 发布:淘宝桔子表行靠谱不 编辑:程序博客网 时间:2024/05/28 03:03
题目地址
题目大意:给出n个点m条边,并给出起点和终点,求起点到终点的最短路
解题思路:1.允许有负权边,可以判断负环
2.时间复杂度:O(ke),k指的是所有顶点的进队的平均次数,可以证明k<=2,e为边数
3.可以用SPFA来存在是否存在环,如果是的话就是存在一条边的松弛操作大于等于n。
#include <iostream>#include <cstdio>#include <cmath>#include <cstring>#include <vector>#include <queue>#include <utility>using namespace std;const int INF=0xfffffff;const int maxn=200+10;int n,m;int mp[maxn][maxn];int dis[maxn];void SPFA(int s){ for(int i=0;i<n;i++) dis[i]=INF; bool vis[maxn]={0}; vis[s]=true; dis[s]=0; queue<int> q; q.push(s); while(!q.empty()) { int cur=q.front(); q.pop(); vis[cur]=false; for(int i=0;i<n;i++) { if(dis[cur] + mp[cur][i] < dis[i]) { dis[i]=dis[cur] + mp[cur][i]; if(!vis[i]) { q.push(i); vis[i]=true; } } } }}int main(){ while(scanf("%d%d",&n,&m) != EOF) { for(int i = 0; i < n; i++) { dis[i] = INF; for(int j = 0; j < n; j++) i==j ? mp[i][j]=0 : mp[i][j]=INF; } for(int i = 0; i < m; i++) { int from,to,val; scanf("%d%d%d",&from,&to,&val); if(mp[from][to] > val) mp[from][to] = mp[to][from] = val; } int s,t; scanf("%d%d",&s,&t); SPFA(s); dis[t]==INF ? printf("-1\n") : printf("%d\n",dis[t]); } return 0;}
0 0
- hdu 1874 畅通工程续(最短路spfa邻接矩阵)
- hdu 1874 畅通工程续(最短路Dij邻接矩阵)
- hdu 1874 畅通工程续(最短路spfa)
- HDU 1874 畅通工程续【最短路 dijkstra & floyed & SPFA 】
- hdu 1874 畅通工程续(最短路spfa邻接表)
- hdu 1874 畅通工程续 最短路spfa
- hdu 1874 畅通工程续 - 最短路
- HDU 1874 畅通工程续 最短路
- hdu 1874 畅通工程续(最短路)
- hdu 1874 畅通工程续 最短路
- HDU-1874-畅通工程续【最短路】
- HDU 1874 畅通工程续【最短路,Dijkstra算法+spfa算法】
- HDU 1874 畅通工程续【最短路,qscqesze直播代码,pair建图,spfa,DIjkstra算法】
- HDOJ 1874 畅通工程续 (最短路 Dijkstra && SPFA && Floyd)
- HDOJ 1874 畅通工程续 (最短路之SPFA)
- 【最短路径spfa算法】HDU 1874---畅通工程续
- HDU 1874畅通工程续&HDU 2544 最短路(Dijsktra)
- hdu 1874 畅通工程(最短路)
- android 动态添加ImageView 设置setPadding不起作用问
- c#基础5
- 代理(超级能理解的自己的方式)
- java生成随机数
- Java总结2
- hdu 1874 畅通工程续(最短路spfa邻接矩阵)
- 1.5 使用Sqoop从HDFS导出数据到MySQL
- ReAct 入门常用语法
- request.getRequestURL() getRequestURI区别
- activity之间切换动画不起作用
- CentOS安装mysql数据库
- C#开发的进化史(从简单的数据类型开始)
- UIButton (常用点击按钮)
- string类到c的字符数组的方法