前言

这是一篇迟到的博客


题目

找一条最廉价的最短路径


输入输出(建议无视)

Input

输入文件第一行有两个整数m和n,用一个空格隔开,其中,m是顶点数,而n是边数。接下来的n行给出所有的边及其价值,每行有3个整数(相邻两个整数间有一个空格),表示起点,终点和边的价值。顶点最多有100个,编号在0到99之间。边最多有1000条,其价值在0到2^15-1之间。

Output

输出文件仅有一行包含一个整数,即V0→V1的廉价最短路径的费用。当出现有多个廉价最短路径的情况时,它们的费用是一样的。

Sample Input

4 5
0 2 2
0 3 2
0 1 10
2 1 2
3 1 2

Sample Output

10


解题思路

正常最短路算法,只不过加上一个判断


代码

#include<cstdio>
using namespace std;
struct woc{long long next,x,y,w;
};
woc a[1001];
long long xx,yy,n,m,k,state[101],ls[101],t,head,tail,f[101],s[101];
bool v[101];
int main()
{scanf("%lld%lld",&n,&m);state[1]=1;int u=0;for (int i=1;i<=m;i++){scanf("%lld%lld%lld",&xx,&yy,&a[u+1].w);xx++;yy++;a[++u].next=ls[xx];a[u].x=xx;a[u].y=yy;ls[xx]=u;}for (int i=1;i<=n;i++) {f[i]=2147483647;s[i]=2147483647;}head=0;tail=1;state[1]=1;v[state[1]]=true;f[1]=0; s[1]=0;while (head!=tail)//SPFA{head++;head=(head-1)%n+1;t=ls[state[head]];while (t!=0){if (f[a[t].x]+1<f[a[t].y] || s[a[t].y]>s[a[t].x]+a[t].w && f[a[t].x]+1==f[a[t].y]){s[a[t].y]=s[a[t].x]+a[t].w;//改变价值f[a[t].y]=f[a[t].x]+1;if (!v[a[t].y]){tail++;tail=(tail-1)%n+1;state[tail]=a[t].y;v[a[t].y]=true;}}t=a[t].next;}v[state[head]]=false;}printf("%lld",s[2]);
}

ssl2661-廉价最短路径【SPFA】相关推荐

  1. 【Floyed】廉价最短路径

    廉价最短路径 题目大意: 一个图中,在满足最短路的前提下,求最小代价 原题: 题目描述 图是由一组顶点和一组边组成的.一条边连接两个顶点.例如,图1表示了一个有4个顶点V.5条边的图.图中,每条边e是 ...

  2. 单源最短路径(spfa)

    题目描述 如题,给出一个有向图,请输出从某一点出发到所有点的最短路径长度. 输入输出格式 输入格式: 第一行包含三个整数N.M.S,分别表示点的个数.有向边的个数.出发点的编号. 接下来M行每行包含三 ...

  3. 最短路径——SPFA算法(蓝桥杯试题集)

    *对于本题的floyd题解请跳转:http://blog.csdn.net/sm9sun/article/details/53285870 题目链接: http://lx.lanqiao.cn/pro ...

  4. 【bfs】廉价最短路径(2013特长生 T4)

    题目大意 给你一个图,每条边有一个代价,让你求0到1在最短路径的前提下的最小代价 解题思路 bfs同时求个最代价 代码 #include<queue> #include<cstdio ...

  5. 四大算法解决最短路径问题(Dijkstra+Bellman-ford+SPFA+Floyd)

    什么是最短路径问题? 简单来讲,就是用于计算一个节点到其他所有节点的最短路径. 单源最短路算法:已知起点,求到达其他点的最短路径. 常用算法:Dijkstra算法.Bellman-ford算法.SPF ...

  6. 图论-单源最短路径算法(拓扑,Dijkstra,Floyd,SPFA)

    前言 单源最短路径是学习图论算法的入门级台阶,但刚开始看的时候就蒙了,什么有环没环,有负权没负权,下面就来总结一下求单源最短路径的所有算法以及其适用的情况. 单源最短路径 设定图中一个点为源点,求其他 ...

  7. 单源最短路径(spfa,Dijkstra, bellman-ford)

    目录 Dijkstra 原理:基于贪心. 为什么 Dijkstra 不能处理有负边的情况 Bellman-ford 原理:动态规划, 实质见floyd的另一篇博客 1,能找负环, 2,有变数限制的最短 ...

  8. 03 最短路 dijkstra算法spfa算法floyd算法(附带实例代码) 图论-1

    文章目录 最短路 邻接表的图如下 邻接矩阵如下图 链表实现邻接表实现代码 单源最短路径 Dijkstra 算法 朴素版本 Dijkstra 实现代码 堆优化的dijkstra算法代码实现 Bellma ...

  9. ACM 全部算法总结

    ACM 所有算法 附带我学过的算法的博客链接 数据结构 栈 队列 链表 哈希表 哈希数组 堆 优先队列 双端队列 可并堆 左偏堆 二叉查找树 Treap 伸展树 并查集 集合计数问题 二分图的识别 平 ...

最新文章

  1. matplotlib 模块 画图 例2
  2. Java设计模式学习06——静态代理与动态代理(转)
  3. 【软考-软件设计师】计算机存储系统
  4. 什么是Pro*C/C++,嵌入式SQL,第一个pro*c程序,pro*c++,Makefile,Proc增删改查
  5. Eclipse-cvs指南
  6. 如何把荣耀手机的计算机移动到桌面,华为荣耀怎么把天气预报设置到桌面
  7. #6073. 「2017 山东一轮集训 Day5」距离(树链剖分 + 永久标记主席树)
  8. (41)FPGA四种常用逻辑门(异或门)
  9. Django笔记13(部署Django)
  10. 实现putchar put_str put_int
  11. 【Hibernate】ch01Demo
  12. 看了星球大战--西斯的复仇
  13. bootstrap布局设计在线工具
  14. 中达优控触摸屏编程视频教程_中达优控触摸屏软件下载 YKBuilder(中达优控触摸屏编程软件) v5.0.200 官方安装免费版 下载-脚本之家...
  15. mysql-跨库联合查询
  16. window7电脑显示屏调亮度的四种方式
  17. java框架难吗_java框架难学吗?怎样才能学好java框架?
  18. excel导出设置自动列宽
  19. MYSQL安装以及登录问题_飘云羽逸_新浪博客
  20. 编辑ListView(Edit,Update,Inse

热门文章

  1. php 新浪面试题,php程序员面试题(新浪篇)
  2. gitlab创建分支上传文件_Gitlab管理和使用基本教程
  3. 一个div 上下两行_Django 实战 | 搭一个 GitHub 用户展示网站 02
  4. 高考英语口试计算机系,大学英语口语考试都考什么,高考英语口试考什么?
  5. [JavaWeb-MySQL]MySQL服务启动和关闭
  6. [C++11]final关键字的使用
  7. C++实现dijkstra单源最短路径算法-邻接表+优先队列
  8. C++继承的继承方式
  9. java 下拉列表 枚举_「Java三分钟」精准而优雅——枚举类详解
  10. Zookeeper--ZAB与Paxos算法联系与区别