蓝桥杯 算法训练 最短路 spfa
来源:互联网 发布:中国近几年进出口数据 编辑:程序博客网 时间:2024/05/01 11:42
参考自:http://www.cnblogs.com/scau20110726/archive/2012/11/18/2776124.html
分成bfs与dfs两种思路
方法一:bfs
#include <iostream>#include <cstring>#include <queue>#include <cmath>using namespace std; #define MAX_N 20010#define MAX_M 200010 #define MAX 200000010int head[MAX_N]; bool vis[MAX_N]; int dis[MAX_N]; int n,m; struct node{int v,value; int next; }edge[MAX_M]; int cur=0; void add(int u,int v,int val){node E={v,val,head[u]}; edge[cur]=E;head[u]=cur++; }void spfa(int x){ for (int i=1;i<=n;i++){dis[i]=MAX; vis[i]=0; }queue<int>q; q.push(x); vis[x]=1; dis[x]=0; while(!q.empty()){int u=q.front(); q.pop();vis[x]=0; for(int i=head[u];i!=-1;i=edge[i].next){node E=edge[i]; if (dis[E.v]>dis[u]+E.value) {dis[E.v]=dis[u]+E.value; if (!vis[E.v]){vis[E.v]=1; q.push(E.v); }}}}} int main(){ memset(head,-1,sizeof(head)); cin>>n>>m; int u,v,val; for (int i=1;i<=m;i++){cin>>u>>v>>val; add(u,v,val); } spfa(1); for(int i=2;i<=n;i++){cout<<dis[i]<<endl; }return 0;}
方法二:dfs
#include <iostream>#include <cstring>using namespace std; #define MAX_N 20010#define MAX_M 200010 #define MAX 200000010int head[MAX_N]; int dis[MAX_N]; struct node{int v,value; int next; }edge[MAX_M]; int cur=0; void add(int u,int v,int val){node E={v,val,head[u]}; edge[cur]=E;head[u]=cur++; }void spfa_dfs(int u){for(int k=head[u]; k!=-1; k=edge[k].next){int v=edge[k].v,w=edge[k].value; if( dis[u]+w < dis[v] ){ dis[v]=dis[u]+w;spfa_dfs(v); }}} int main(){ memset(head,-1,sizeof(head)); int n,m; cin>>n>>m; for (int i=1;i<=n;i++){dis[i]=MAX; }dis[1]=0; int u,v,val; for (int i=1;i<=m;i++) {cin>>u>>v>>val; add(u,v,val); } spfa_dfs(1); for(int i=2;i<=n;i++){cout<<dis[i]<<endl; }return 0;}
0 0
- 蓝桥杯, 算法训练 最短路 (SPFA)
- 蓝桥杯 - 算法训练 最短路(spfa)
- 蓝桥杯 算法训练 最短路 spfa
- 蓝桥杯 算法训练 最短路 (spfa)
- 算法训练 最短路 spfa
- 算法训练 最短路 spfa
- 蓝桥杯 算法训练---最短路(spfa算法)
- 蓝桥杯(算法训练)——最短路 SPFA算法
- 算法训练 最短路 (spfa算法)
- 蓝桥杯 - 算法训练 - ALGO - 5 最短路(spfa)
- 蓝桥杯 算法训练 最短路 (链式前向星,spfa)
- SPFA算法 最短路 蓝桥杯
- 蓝桥杯训练 最短路 (SPFA模板 vector)
- 算法训练 最短路(SPFA算法)---没100分
- 算法训练 最短路 dijkstra优先队列和spfa
- 算法训练 最短路(spfa+slf优化)
- 最短路--SPFA算法
- 最短路SPFA算法
- 59. web 攻击技术(3)
- HashMap源码解析-jdk8
- POJ_2386_Lake Counting
- CSDN-markdown编辑器快捷方式
- mysql数据库配置
- 蓝桥杯 算法训练 最短路 spfa
- Unrecognized Windows Sockets error: 0: JVM_Bind 异常解决办法
- 深度学习如何设置学习率
- myeclipse连接mysql数据库详细步骤
- 动态规划 最长公共子序列
- 第8周OJ项目4 小球自由下落
- Scala:提取器(Extractor)
- mysql rpm之linux安装
- 搬瓦工Shadowsocks配置总结