和小哥哥一起刷洛谷(6) 图论之SPFA算法
关于\(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算法相关推荐
- 【入门2】分支结构 (今天刷洛谷了嘛)
[60天计划] 刷洛谷(题单广场) and Acwing算法基础课 P5710 [深基3.例2]数的性质 #include<iostream> #include<algorithm& ...
- 【入门1】顺序结构 (今天刷洛谷了嘛)
[60天计划] 刷洛谷(题单广场) and Acwing算法基础课 P1001 A+B Problem #include<iostream> #include<algorithm&g ...
- 一个新手刷洛谷网的经历
刷洛谷网也有一段时间了,但是一直进展不大,当我刷完新手前三关的时候,循环那关有道三连击的题目正是我在算法书上遇到的那道题,当时看着很烦,因为实在没有任何头绪,不过幸运的是洛谷网只要求每关作对三道题就可 ...
- 洛谷or牛客数据结构+算法
栈思想:先进后出 tips:栈里能放下标就放下标 (牛客)小c的计事本(直接用stack可以简化代码,且不会被自己绕晕,当时没意识到) (牛客)吐泡泡(没意识到用栈),(牛客)好串 1.后缀表达式(栈 ...
- 求第k小的数(洛谷P1923题题解,Java/C++语言描述)
题目要求 题目链接 分析 <查找第K大/小元素算法> 这题不使用线性复杂度算法是过不去的(除非你用C++的[内置函数]or[快读+sort()]) Java应该是不可能过去的,你用C++可 ...
- 小A点菜(洛谷-P1164)
题目描述 uim神犇拿到了uoi的ra(镭牌)后,立刻拉着基友小A到了一家--餐馆,很低端的那种. uim指着墙上的价目表(太低级了没有菜单),说:"随便点". 不过uim由于买了 ...
- 【算法1-2】排序(今天刷洛谷了嘛)
P1271 [深基9.例1]选举学生会 #include<iostream> #include<algorithm> #include<cstdio> #inclu ...
- 【入门5】字符串(今天刷洛谷了嘛)
几道纯模拟题没有写,暂且先放一下 P5733 [深基6.例1]自动修正 #include<iostream> #include<algorithm> #include<c ...
- 小A点菜(洛谷P1164题题解,Java语言描述)
题目要求 题目链接 分析 用DPDPDP做是必然的,讲讲二维的吧: f[i][j]f[i][j]f[i][j]:用前iii道菜用光jjj元钱的可能组合数 剩下的钱等于第iii道菜的价格时,f[i][j ...
- 【动态规划1】动态规划的引入(今天刷洛谷了嘛)
注: P4017 最大食物链计数 因为现在还不会拓扑排序,所以暂且放到以后去解决! P1216 [USACO1.5][IOI1994]数字三角形 Number Triangles #include&l ...
最新文章
- Java中的BigDecimal类你真的了解吗?
- 用树莓派从0开始打造属于自己的服务器
- Matlab赋值语句
- 类型转换操作符:static_cast, dynamic_cast, const_cast, reinterpret_cast.
- 四、Go语言复合数据类型(上)
- Mac 10.12彻底关闭Dashboard
- java多线程之生产者和消费者问题
- mongodb添加创建修改时间_MongoDB数据库插入、更新和删除操作详解
- 图解VMWare10创建虚拟机
- html怎么做成3d正方体,利用CSS3的3D效果制作正方体
- 简单小知识 记录一下 慢慢更新积累
- C语言大作业学生选课系统,C语言学生选课管理系统
- 联想M7650DF加粉和重置/清零的正确方法
- H7000 DTU 问与答
- 计算机专业实训指导老师评语,计算机教师指导评语
- 浏览器突然访问不了某个网址或者提示无法访问此网站
- 1044 Shopping in Mars(二分法)
- 刚刚,2022中国大学排行榜发布
- Oceanus:美团点评HTTP流量定制化路由的实践
- react+ts搭建