关于\(spfa\)

spfa伪代码:

void spfa(s){最短路数组全部设为无限大;队列 q;起点s入队;s离s的距离设为零;while(队列非空){取出队首;弹出队首;for(int i=0;i<u的出度;i++){v=第i个终点;w=到v的权值;if(到u点的最短路+w<目前到v点的最短路){//松弛更新目前到v点的最短路;v入队;}}}
}

P3371 单源最短路径(弱化版)

题目描述:

如题,给出一个有向图,请输出从某一点出发到所有点的最短路径长度。

输入输出格式:

输入格式:

第一行包含三个整数N、M、S,分别表示点的个数、有向边的个数、出发点的编号。

接下来M行每行包含三个整数Fi、Gi、Wi,分别表示第i条有向边的出发点、目标点和长度。

输出格式:

一行,包含N个用空格分隔的整数,其中第i个整数表示从点S出发到点i的最短路径长度(若S=i则最短路径长度为0,若从点S无法到达点i,则最短路径长度为2147483647)

样例:

输入:

4 6 1
1 2 2
2 3 2
2 4 1
1 3 5
3 4 3
1 4 4

输出:

0 2 4 3

代码:

#include<iostream>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<cstdio>
#include<cstdlib>
#include<stack>
#include<queue>
#include<vector>
using namespace std;
const int NR=100000;
int d[NR]/*最短路径存储列表*/,n,m,s;
vector< pair<int,int> > adj[NR];//一个结构体队列
void spfa(int s){//spfa函数memset(d,0x3f,sizeof(d));queue<int> q;q.push(s);d[s]=0;while(!q.empty()){int u=q.front();q.pop();for(int i=0;i<adj[u].size();i++){int v=adj[u][i].first;int w=adj[u][i].second;if(d[u]+w<d[v]){d[v]=d[u]+w;q.push(v);}}}
}
int main()
{scanf("%d%d%d",&n,&m,&s);for(int i=0;i<m;i++){int st,en,w;scanf("%d%d%d",&st,&en,&w);adj[st].push_back(make_pair(en,w));}spfa(s);for(int i=1;i<=n;i++){//输出if(d[i]>=1e9)printf("2147483647 ");else printf("%d ",d[i]);}return 0;
}

转载于:https://www.cnblogs.com/BlogE/p/luogu_day6.html

和小哥哥一起刷洛谷(6) 图论之SPFA算法相关推荐

  1. 【入门2】分支结构 (今天刷洛谷了嘛)

    [60天计划] 刷洛谷(题单广场) and Acwing算法基础课 P5710 [深基3.例2]数的性质 #include<iostream> #include<algorithm& ...

  2. 【入门1】顺序结构 (今天刷洛谷了嘛)

    [60天计划] 刷洛谷(题单广场) and Acwing算法基础课 P1001 A+B Problem #include<iostream> #include<algorithm&g ...

  3. 一个新手刷洛谷网的经历

    刷洛谷网也有一段时间了,但是一直进展不大,当我刷完新手前三关的时候,循环那关有道三连击的题目正是我在算法书上遇到的那道题,当时看着很烦,因为实在没有任何头绪,不过幸运的是洛谷网只要求每关作对三道题就可 ...

  4. 洛谷or牛客数据结构+算法

    栈思想:先进后出 tips:栈里能放下标就放下标 (牛客)小c的计事本(直接用stack可以简化代码,且不会被自己绕晕,当时没意识到) (牛客)吐泡泡(没意识到用栈),(牛客)好串 1.后缀表达式(栈 ...

  5. 求第k小的数(洛谷P1923题题解,Java/C++语言描述)

    题目要求 题目链接 分析 <查找第K大/小元素算法> 这题不使用线性复杂度算法是过不去的(除非你用C++的[内置函数]or[快读+sort()]) Java应该是不可能过去的,你用C++可 ...

  6. 小A点菜(洛谷-P1164)

    题目描述 uim神犇拿到了uoi的ra(镭牌)后,立刻拉着基友小A到了一家--餐馆,很低端的那种. uim指着墙上的价目表(太低级了没有菜单),说:"随便点". 不过uim由于买了 ...

  7. 【算法1-2】排序(今天刷洛谷了嘛)

    P1271 [深基9.例1]选举学生会 #include<iostream> #include<algorithm> #include<cstdio> #inclu ...

  8. 【入门5】字符串(今天刷洛谷了嘛)

    几道纯模拟题没有写,暂且先放一下 P5733 [深基6.例1]自动修正 #include<iostream> #include<algorithm> #include<c ...

  9. 小A点菜(洛谷P1164题题解,Java语言描述)

    题目要求 题目链接 分析 用DPDPDP做是必然的,讲讲二维的吧: f[i][j]f[i][j]f[i][j]:用前iii道菜用光jjj元钱的可能组合数 剩下的钱等于第iii道菜的价格时,f[i][j ...

  10. 【动态规划1】动态规划的引入(今天刷洛谷了嘛)

    注: P4017 最大食物链计数 因为现在还不会拓扑排序,所以暂且放到以后去解决! P1216 [USACO1.5][IOI1994]数字三角形 Number Triangles #include&l ...

最新文章

  1. Java中的BigDecimal类你真的了解吗?
  2. 用树莓派从0开始打造属于自己的服务器
  3. Matlab赋值语句
  4. 类型转换操作符:static_cast, dynamic_cast, const_cast, reinterpret_cast.
  5. 四、Go语言复合数据类型(上)
  6. Mac 10.12彻底关闭Dashboard
  7. java多线程之生产者和消费者问题
  8. mongodb添加创建修改时间_MongoDB数据库插入、更新和删除操作详解
  9. 图解VMWare10创建虚拟机
  10. html怎么做成3d正方体,利用CSS3的3D效果制作正方体
  11. 简单小知识 记录一下 慢慢更新积累
  12. C语言大作业学生选课系统,C语言学生选课管理系统
  13. 联想M7650DF加粉和重置/清零的正确方法
  14. H7000 DTU 问与答
  15. 计算机专业实训指导老师评语,计算机教师指导评语
  16. 浏览器突然访问不了某个网址或者提示无法访问此网站
  17. 1044 Shopping in Mars(二分法)
  18. 刚刚,2022中国大学排行榜发布
  19. Oceanus:美团点评HTTP流量定制化路由的实践
  20. react+ts搭建

热门文章

  1. LeetCode之Z字形变换
  2. Servlet和Tomcat底层分析
  3. 温州大学c语言作业布置的网站,2016年温州大学物理与电子信息工程学院综合卷之C语言程序设计复试笔试仿真模拟题...
  4. 十三、this关键字
  5. PCRE demo【转】
  6. Visual Studio Code 基本操作 - Windows 版
  7. Exp4恶意软件分析 20154326杨茜
  8. linux安装php-redis扩展(转)
  9. work of 1/5/2016
  10. 互联网对实体经济的三轮冲击