单源最短路-SPFA(poj2387)
来源:互联网 发布:php和java哪个好找工作 编辑:程序博客网 时间:2024/05/01 01:45
题目链接:http://poj.org/problem?id=2387
1.用邻接表存图
用u[i],v[i],w[i]数组表示第i条边是从点u[i]到v[i],路径长度是w[i];
用first[i]数组存顶点i的第一条边的编号;
用next[i]数组存第i条边的下一条边的编号;
2.用dis[i]数组表示从源点到i点的最短路径;
3.用book[i]数组标记点i是否在队列中;
SPFA算法步骤:
1.初始时将源点加入队列
2.每次从队首取出一个顶点,对这个顶点的所有出边进行松弛操作,若松弛成功,这个出边指向的顶点入队,对当前顶点处理完后出队
3.重复第2步直到队列为空
算法复杂度:最坏O(N*M)
#include <iostream>using namespace std;int u[4005],v[4005],w[4005]; //邻接表存图int first[1005]; //点i的第一条边的编号int ne[4005]; // 边i的下一条边int dis[1005],book[1005];int que[9999999],head = 1,tail = 1; //定义队列并初始化int inf = 99999999;int main(){ int t,n; cin>>t>>n; // 初始化dis数组 ,表示1号顶点到其余各个顶点的路程 for (int i =1; i <= n; i++) dis[i] = inf; dis[1] = 0; //初始化book数组,一开始所有顶点都不在队列中 for (int i =1; i<= n; i++) book[i] = 0; //初始化first数组,next数组,表示顶点暂时都没有边 for(int i =1;i <= n;i++) { first[i] = -1; } //读入边,建立邻接表 for (int i =1; i <= 2*t; i++) { cin>>u[i]>>v[i]>>w[i]; ne[i] = first[u[i]]; first[u[i]] = i; i++; u[i] = v[i - 1]; v[i] = u[i - 1]; w[i] = w[i - 1]; ne[i] = first[u[i]]; first[u[i]] = i; } //1号顶点入队 que[tail] = 1; tail++; book[1] = 1; while (head<tail) //队列不为空时循环 { int k = first[que[head]]; while (k != -1) { if (dis[v[k]] > dis[u[k]] + w[k]) { dis[v[k]] = dis[u[k]] + w[k]; if (book[v[k]] == 0 ) { que[tail] = v[k]; tail++; book[v[k]] = 1; } } k = ne[k]; } book[que[head]] = 0; head++; } cout<<dis[n]<<endl; return 0;}
0 0
- 单源最短路-SPFA(poj2387)
- 【最短路】poj2387 SPFA
- 最短路 dijkstra算法 poj2387 bellman_ford spfa
- POJ2387(最短路基础)
- POJ2387 最短路入门题 [spfa,dijstra+heap]
- spfa 算法 (单源最短路)
- 单源最短路SPFA(模板)
- 单源最短路(SPFA算法)
- 单源最短路(bellmanford&spfa)
- poj2387(最简单的最短路)
- poj2387 spfa图
- POJ2387 Til the Cows Come Home(最短路,Dijkstra算法,spfa算法,Floyd算法,深搜DFS)
- 最短路--poj2387
- 最短路模板poj2387
- 单源最短路(spfa),删边求和
- poj 1062(spfa 单源最短路)
- 单源最短路----Spfa模板 (SLF优化)
- 单源最短路------SPFA
- ATL动态库调试总是链接到其它路径下的可执行程序
- 利用 jquery flot 生成柱状图
- java io 流整理
- hoyi-web[java] 用户控件的使用
- 基于Ubuntu14.04的Hadoop2.6.0完全分布式安装
- 单源最短路-SPFA(poj2387)
- AngularJS中$http.jsonp跨域请求问题
- UIColor (16进制颜色、透明色使用)
- iOS开发笔记-UITableView的单选
- (几个gradle)gradle工程的环境搭建----安装gradle
- AKKA文档(java版)—角色
- Spring Security3 - MVC 整合教程 (初识Spring Security3)
- 用NPOI操作EXCEL-锁定列CreateFreezePane()
- oracle分页sql