从同学那里学的spfa,只不过改了几个我常用的变量名,加了几句评论,就成我的东西!呵呵,赶脚自己是小偷,在偷技术!哈哈,不过他要是来问我的话,我也会毫无保留的跟他说的,我们要跟国际接轨,要有开源精神!下面给出spfa的一般代码,具体变量作用在代码中略有解释!

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<queue>using namespace std;
const int maxn=10005;
const int INF=0x3f3f3f3f;int g[maxn][maxn];
int vis[maxn],dis[maxn];queue<int > que;void init()
{memset(g,INF,sizeof(g));for(int i=0;i<maxn;i++)g[i][i]=0;
}void spfa(int from,int to,int n)
{memset(vis,0,sizeof(vis));memset(dis,INF,sizeof(dis));dis[from]=0;que.push(from);while(!que.empty()){int x=que.front();que.pop();vis[x]=1;for(int y=1;y<=n;y++){    //枚举连接x点所有点if(g[x][y]==INF)continue;if(dis[x]<INF&&dis[y]>dis[x]+g[x][y]){     //更新到from的最短路;dis[y]=dis[x]+g[x][y];if(!vis[y]){           //剪枝,看他们是否已经在队列中;que.push(y);vis[y]=1;}}}}//for(int i=0;i<=n;i++)printf("%d : %d\n",i,dis[i]);
}int main()
{int n,m;while(~scanf("%d%d",&n,&m)){init();int from ,to,len;for(int i=0;i<m;i++){scanf("%d%d%d",&from ,&to,&len);if(len<g[from][to])g[from][to]=g[to][from]=len;}scanf("%d%d",&from,&to);spfa(from ,to, n);printf("%d \n",dis[to]);}return 0;
}

我的spfa (= =)!相关推荐

  1. BZOJ 1003[ZJOI2006]物流运输(SPFA+DP)

    Problem 1003. -- [ZJOI2006]物流运输 1003: [ZJOI2006]物流运输 Time Limit: 10 Sec  Memory Limit: 162 MB Submit ...

  2. spfa(还不懂--)

    粗略讲讲SPFA算法的原理,SPFA算法是1994年西安交通大学段凡丁提出 是一种求单源最短路的算法 算法中需要用到的主要变量 int n;  //表示n个点,从1到n标号 int s,t;  //s ...

  3. sdut AOE网上的关键路径(spfa+前向星)

    http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=2498&cid=1304 题目描述 一个无环的有向图称为无环图(Directed Acyc ...

  4. poj 3662 Telephone Lines spfa算法灵活运用

    意甲冠军: 到n节点无向图,它要求从一个线1至n路径.你可以让他们在k无条,的最大值.如今要求花费的最小值. 思路: 这道题能够首先想到二分枚举路径上的最大值,我认为用spfa更简洁一些.spfa的本 ...

  5. 1003 Emergency(Dijkstra,Bellman-Ford,SPFA三种解法)

    目录 1. Dijkstra解法 2. Bellman-Ford解法 3. SPFA解法 4. Dijkstra解法AC代码 5. Bellman-Ford解法AC代码 6. SPFA解法AC代码 1 ...

  6. 图论-最短路径--3、SPFA算法O(kE)

    SPFA算法O(kE) 主要思想是:     初始时将起点加入队列.每次从队列中取出一个元素,并对所有与它相邻的点进行修改,若某个相邻的点修改成功,则将其入队.直到队列为空时算法结束.     这个算 ...

  7. 【POJ/算法】 3259 Wormholes(Bellman-Ford算法, SPFA ,FLoyd算法)

    Bellman-Ford算法 Bellman-Ford算法的优点是可以发现负圈,缺点是时间复杂度比Dijkstra算法高.而SPFA算法是使用队列优化的Bellman-Ford版本,其在时间复杂度和编 ...

  8. 【HDU/算法】最短路问题 杭电OJ 2544 (Dijkstra,Dijkstra+priority_queue,Floyd,Bellman_ford,SPFA)

    最短路径问题是图论中很重要的问题. 解决最短路径几个经典的算法 1.Dijkstra算法 单源最短路径(贪心),还有用 priority_queue 进行优化的 Dijkstra 算法. 2.bell ...

  9. HDU3440(差分约束+SPFA算法)

    题意:两栋房子之间的最大距离为D,也就是A-B<=D,现在求出最矮和最高房子之间的最大距离 思路:差分约束+SPFA算法: 当问题可以转化为形如一组 xi‑x'i<=yi 或一组 xi‑x ...

  10. poj1201(差分约束+SPFA)

    看到这道题,其实就是和poj1716是差不多的 题意:给出n个闭整数区间[ai,bi]和n个整数C1,.,cn.计算具有区间[ai,bi]的至少ci公共元素的整数集Z的最小大小,对于每一个i=1,2, ...

最新文章

  1. 美国科学院2020新晋院士名单发布!中科院曹晓风及6位华人学者入选,去年还有高福和颜宁...
  2. 【分布式事务系列九】聊聊分布式事务
  3. 解决django关于图片无法显示的问题
  4. linux 虚拟网络设备详解(四)
  5. 餐饮O2O创业 有用户却难变现
  6. 递归锁、信号量、GIL锁、基于多线程的socket通信和进程池线程池
  7. python程序怎么修改_详解Python文件修改的两种方式
  8. 二进制分类(信息学奥赛一本通-T1412)
  9. 一台服务器多个oracle启动
  10. 【数据结构】分治代码模板
  11. HBuilderX的各版本软件自取
  12. SAS(五)建立SAS数据集的方法及导出数据
  13. r语言员工离职_使用R机器学习进行员工离职预测系列(一)
  14. c语言怎么写tg的反函数,关于y=x对称的两个函数表达式有什么特点 改怎么写 比如对数函数...
  15. FT232RL芯片USB转TTL应用
  16. 两个绝对值相减求最值_matlab同一矩阵任意两列相减绝对值的最大值和最小值
  17. 大数据需要学哪些内容
  18. oracle11g ins208022,解决重装 Oracle 出现的 INS-32025 问题,完全卸载 Oracle11g
  19. activity或者flowable会签任务的事例
  20. Python新建、写入和修改txt(文本文档)

热门文章

  1. 单片机与ARM嵌入式,DSP,FPGA的联系与区别
  2. 单向链表和双向链表的优缺点及使用场景
  3. 模拟 nbut1225 NEW RDSP MODE I
  4. 第9个HttpClient 例子,HttpClient+jsoup 扩展获取网站信息
  5. [CSS] 浮动 float属性、clear属性详解
  6. Android 客户端直播实现
  7. Problem B: 薪酬计算 之二
  8. 【C数据结构】单链表的实现以及链表和顺序表的优缺点
  9. influxdb删除column
  10. php 网站访问统计插件,帝国CMS教程_网站访问统计插件使用教程_好特教程