洛谷P3371 单源最短路径
来源:互联网 发布:软件企业资质 编辑:程序博客网 时间:2024/05/16 06:12
洛谷P3371 单源最短路径
- 洛谷P3371 单源最短路径
- 考点
- 题意
- 思路
- 额外
- 代码
考点
- 最短路
- SPFA或dijistra的堆优化
题意
洛谷原题链接
非常裸的最短路题目,做来练练手。
思路
单源最短路,SPFA走起。SPFA快又好写。
额外
这道题数据十分给力,dijistra模板是过不了的,要加堆优化。但是信奉SPFA的我不方!
第一次WA了一个点,把memset(dis,2147483647,sizeof(dis))
换成 for(int i=1;i<=maxnode;++i) dis[i]=2147483647
后就A了…
不要信memset!
还有,边是有向边,因此add_Edge时不要建立另外一条
代码
#include<iostream>#include<cstdio>#include<cstring>#include<queue>using namespace std;const int maxnode=10001;const int maxline=500001;int startnode,totnode,totline;long long dis[maxnode];struct lsqqx{ int to; int value; int nxt;}edge[maxline];int cnt=0;int head[maxnode];#define forline(i,x) for(int i=head[x];i!=-1;i=edge[i].nxt)queue<int> team;bool exist[maxnode];void add_Edge(int x,int y,int val){ edge[cnt].nxt=head[x]; edge[cnt].to=y; edge[cnt].value=val; head[x]=cnt; cnt++;}void SPFA(int s){ dis[s]=0; team.push(s); int will; int nownode; while(!team.empty()) { nownode=team.front(); team.pop(); exist[nownode]=0; forline(i,nownode) { will=edge[i].to; if(dis[will]>dis[nownode]+edge[i].value) { dis[will]=dis[nownode]+edge[i].value; if(!exist[will]) { exist[will]=1; team.push(will); } } } }}int main(){ for(int i=1;i<=maxnode;++i) dis[i]=2147483647; memset(head,-1,sizeof(head)); scanf("%d%d%d",&totnode,&totline,&startnode); int x,y,z; for(int i=1;i<=totline;++i) { scanf("%d%d%d",&x,&y,&z); add_Edge(x,y,z); } SPFA(startnode); for(int i=1;i<=totnode-1;++i) { printf("%lld ",dis[i]); } printf("%lld\n",dis[totnode]);}
阅读全文
0 0
- 洛谷P3371 单源最短路径
- 洛谷 P3371 [模版] 单源最短路径
- 洛谷 P3371 【模板】单源最短路径
- 洛谷 P3371 【模板】单源最短路径
- 洛谷 P3371 【模板】单源最短路径
- 洛谷 P3371 【模板】单源最短路径
- 洛谷P3371 【模板】单源最短路径
- 洛谷P3371【模板】单源最短路径
- 洛谷 P3371 【模板】单源最短路径
- 洛谷 P3371 【模板】单源最短路径
- 洛谷P3371 【模板】单源最短路径
- 洛谷P3371 单源最短路径(spfa)
- 洛谷 P3371 【模板SPFA】单源最短路径
- [洛谷]P3371 单源最短路径模板 SPFA
- [洛谷]P3371 单源最短路径模板-bell
- [洛谷]P3371 单源最短路径模板 Dijkstra
- P3371 【模板】单源最短路径
- P3371 【模板】单源最短路径
- 银联商务MISPOS接口开发demo 需要调用POSINF.DLL
- 机器学习笔记二十三 TensorFlow
- 简单转下snowflak的介绍
- vs2010下 LNK1123: 转换到 COFF 期间失败: 文件无效或损坏的问题解决办法
- C++ iterator遍历 以前没注意到的一个点 前置递增和后置递增
- 洛谷P3371 单源最短路径
- 【bitset】POJ2443[Set Operation]题解
- BZOJ 4034 树上操作 链剖
- 关于if-else代码的优化
- HTML
- Python菜鸟笔记2—密码加密
- C++基本知识整理(1)
- 排序算法之快速排序
- Caffe源码(五):conv_layer 分析