题目描述

Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司。该航空公司一共在n个城市设有业务,设这些城市分别标记为0到n-1,一共有m种航线,每种航线连接两个城市,并且航线有一定的价格。Alice和Bob现在要从一个城市沿着航线到达另一个城市,途中可以进行转机。航空公司对他们这次旅行也推出优惠,他们可以免费在最多k种航线上搭乘飞机。那么Alice和Bob这次出行最少花费多少?

输入

数据的第一行有三个整数,n,m,k,分别表示城市数,航线数和免费乘坐次数。
第二行有两个整数,s,t,分别表示他们出行的起点城市编号和终点城市编号。(0<=s,t<n)
接下来有m行,每行三个整数,a,b,c,表示存在一种航线,能从城市a到达城市b,或从城市b到达城市a,价格为c。(0<=a,b<n,a与b不相等,0<=c<=1000)

输出

只有一行,包含一个整数,为最少花费。

样例输入

5 6 1
0 4
0 1 5
1 2 5
2 3 5
3 4 5
2 3 3
0 2 100

样例输出

8


题解

分层图Spfa

dis[i][j]表示免费j条后i到s的最短路。

然后跑分层图Spfa。

第一次写分层图,也是第一次用pair,所以代码略丑,凑合着看吧。

#include <cstdio>
#include <cstring>
#include <queue>
#include <utility>
using namespace std;
queue<pair<int , int> > q;
int head[10010] , to[100010] , len[100010] , next[100010] , cnt , dis[10010][11] , inq[10010][11];
void add(int x , int y , int z)
{
to[++cnt] = y;
len[cnt] = z;
next[cnt] = head[x];
head[x] = cnt;
}
int main()
{
int n , m , k , i , s , t , x , y , z , ans = 0x3f3f3f3f;
pair<int , int> u;
scanf("%d%d%d%d%d" , &n , &m , &k , &s , &t);
for(i = 1 ; i <= m ; i ++ )
scanf("%d%d%d" , &x , &y , &z) , add(x , y , z) , add(y , x , z);
memset(dis , 0x3f , sizeof(dis));
dis[s][0] = 0;
q.push(make_pair(s , 0));
while(!q.empty())
{
u = q.front();
q.pop();
x = u.first , y = u.second;
inq[x][y] = 0;
for(i = head[x] ; i ; i = next[i])
{
if(dis[to[i]][y] > dis[x][y] + len[i])
{
dis[to[i]][y] = dis[x][y] + len[i];
if(!inq[to[i]][y]) inq[to[i]][y] = 1 , q.push(make_pair(to[i] , y));
}
if(y < k && dis[to[i]][y + 1] > dis[x][y])
{
dis[to[i]][y + 1] = dis[x][y];
if(!inq[to[i]][y + 1]) inq[to[i]][y + 1] = 1 , q.push(make_pair(to[i] , y + 1));
}
}
}
for(i = 0 ; i <= k ; i ++ ) ans = min(ans , dis[t][i]);
printf("%d\n" , ans);
return 0;
}

最新文章

  1. 隐私泄露杀手锏 —— Flash 权限反射
  2. iOS网络4——Reachability检测网络状态
  3. php以pdo方式连接sqlserver,无法开启sqlsrv扩展
  4. mysql事务处理用法与实例详解
  5. 基于AppCan MAS系统,如何轻松实现移动应用数据服务?
  6. C#&amp;Java重学笔记(集合比较和转换)
  7. rsync服务安装
  8. java基础知识(一)
  9. DevExpress控件之:ChartControl 动态绑定数据
  10. [bash] 查找替换文件
  11. headfirst设计模式(8)—适配器模式与外观模式
  12. openlayers4 入门开发系列之地图属性查询篇(附源码下载)
  13. 『练手』001 Laura.SqlForever架构基础(Laura.XtraFramework 的变迁)
  14. exception ‘PHPExcel_Calculation_Exception‘ with message ‘粉丝数据!C2679 -&gt; Formula Error: Operator ‘=‘ has no operands
  15. pythone函数基础(10)MD5加密
  16. PreparedStatement setDate setTimestamp ,util.date sql.date区别
  17. vue全家桶+Koa2开发笔记(2)--koa2
  18. [How to]HBase集群备份方法
  19. 一个性能较好的JVM参数配置
  20. 17-js 提交表单以及判空

热门文章

  1. nmap教程(下)
  2. BZOJ1053_反素数_KEY
  3. 北京Uber优步司机奖励政策(2月19日)
  4. AOSP 设置编译输出目录
  5. Typeahead的使用总结
  6. 【SpringCloud】第三篇: 服务消费者(Feign)
  7. angular-使用定时器调后台接口
  8. @meida 媒体查询
  9. 解析范式(1NF-4NF)
  10. 饥饿的小易(枚举+广度优先遍历(BFS))