Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司。该航空公司一共在n个城市设有业务,设这些城市分别标记为0到n-1,一共有m种航线,每种航线连接两个城市,并且航线有一定的价格。Alice和Bob现在要从一个城市沿着航线到达另一个城市,途中可以进行转机。航空公司对他们这次旅行也推出优惠,他们可以免费在最多k种航线上搭乘飞机。那么Alice和Bob这次出行最少花费多少?Input数据的第一行有三个整数,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) Output 只有一行,包含一个整数,为最少花费。Sample Input5 6 1
0 4
0 1 5
1 2 5
2 3 5
3 4 5
2 3 3
0 2 100
Sample Output8HINT

对于30%的数据,2<=n<=50,1<=m<=300,k=0;

对于50%的数据,2<=n<=600,1<=m<=6000,0<=k<=1;

对于100%的数据,2<=n<=10000,1<=m<=50000,0<=k<=10.

BZOJ2662的姊妹题TUT 直接敲

#include <stdio.h>

#include <iostream>

#include<queue>

#include <string.h>

#include <algorithm>

#define maxn 10001

#define maxm 100001

#define esp 0.00000001

using namespace std;

typedef pair<int,int> pii;

int head[maxn],point[maxm],next[maxm],value[maxm],now=0;

int n,m,kk,s,t,dist[maxn][11];

void add(int x,int y,int v)

{

next[++now]=head[x];

head[x]=now;

point[now]=y;

value[now]=v;

}

int spfa(int s)

{

memset(dist,0x3f,sizeof(dist));

for(int i=0;i<=kk;i++)dist[s][i]=0;

int visit[maxn][11]={{0}};

visit[s][0]=1;

queue<pii>q;

q.push(make_pair(s,0));

while(!q.empty())

{

pii uu=q.front();

q.pop();

int u=uu.first,b=uu.second;

visit[u][b]=0;

for(int i=head[u];i;i=next[i])

{

int k=point[i];

if(dist[u][b]+value[i]<dist[k][b])

{

dist[k][b]=dist[u][b]+value[i];

if(visit[k][b]==0)

{

visit[k][b]=1;

q.push(make_pair(k,b));

}

}

if(dist[u][b]<dist[k][b+1])

if(b+1<=kk)

{

dist[k][b+1]=dist[u][b];

if(visit[k][b+1]==0)

{

visit[k][b+1]=1;

q.push(make_pair(k,b+1));

}

}

}

}

int ans=0x3f3f3f3f;

for(int i=0;i<=kk;i++)

{

if(dist[t][i]==-1)continue;

ans=min(ans,dist[t][i]);

}

return ans;

}

int main()

{

int x,y,v;

scanf("%d%d%d%d%d",&n,&m,&kk,&s,&t);

for(int i=1;i<=m;i++)

{

scanf("%d%d%d",&x,&y,&v);

add(x,y,v);

add(y,x,v);

}

printf("%d\n",spfa(s));

return 0;

}

转载于:https://www.cnblogs.com/philippica/p/4063367.html

BZOJ 2763: [JLOI2011]飞行路线 【SPFA】相关推荐

  1. BZOJ 2763: [JLOI2011]飞行路线 spfa dp

    题目链接: http://www.lydsy.com/JudgeOnline/problem.php?id=2763 题解: d[x][kk]表示从s到x用了kk次免费机会的最少花费. 代码: #in ...

  2. bzoj 2763 [JLOI2011]飞行路线——分层图

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2763 分层图两种方法的练习. 1.把图分成k+1层,本层去上面一层的边免费.但空间时间都不算 ...

  3. BZOJ 2763[JLOI2011]飞行路线 - 最短路

    描述 给出一个无向图, 出发地$s$和目的地$t$, 让你求出不计算 任意$K$条边权值 的最短路 题解 刚开始我是用记忆化搜索记录状态$F_{i, k}$, 表示从出发地出发 到第$i$个城市, 还 ...

  4. bzoj2763 [JLOI2011]飞行路线

    2763: [JLOI2011]飞行路线 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 3216  Solved: 1230 [Submit][St ...

  5. P4568 [JLOI2011]飞行路线

    P4568 [JLOI2011]飞行路线 Description Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公司一共在n个城市设有业务,设这些城市分别标记为0到n-1 ...

  6. 洛谷P4568 [JLOI2011] 飞行路线 题解

    洛谷P4568 [JLOI2011] 飞行路线 题解 题目链接:P4568 [JLOI2011] 飞行路线 题意: Alice 和 Bob 现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公 ...

  7. 洛谷 P4568 [JLOI2011] 飞行路线(分层图最短路)

    [JLOI2011] 飞行路线 题目描述 Alice 和 Bob 现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公司一共在 n n n 个城市设有业务,设这些城市分别标记为 0 0 0 到 ...

  8. JLOI2011 飞行路线

    洛谷 BZOJ 分析 经典的分层最短路题(我不会). 建 \(k+1\) 层图,跑一遍最短路,找到 \(dis[i]\) 最小的一个. 代码 #include <queue> #inclu ...

  9. P4568 [JLOI2011]飞行路线 P2939 [USACO09FEB]改造路Revamping Trails

    分层图最短路系列题目 分层图最短路的题目有一个非常容易看得出的把戏:让k条边免费. 对于能让\(k\)条边免费的数据,我们开\(k+1\)层图.每一层图内部正常连点,不同的是前一层的图的起点连一条权值 ...

最新文章

  1. 用Handler的post()方法来传递线程中的代码段到主线程中执行
  2. 无符号数的减法_C++核心准则ES.107:不要使用无符号数下标,使用gsl::index更好
  3. 13-Flutter移动电商实战-ADBanner组件的编写
  4. python隐藏启动台_如何在Python中启动后台进程?
  5. 触底事件_福建双外到位欲触底反弹,李宁回应易建联扔鞋事件,吉林主帅表态...
  6. (13)FPGA面试题阻塞赋值与非阻塞赋值
  7. 6.5移相器(Phasers)
  8. 向爸爸借了500,向妈妈借了500,买了双皮鞋用了970。剩下30元,还爸爸10块,还妈妈10块,自己剩下了10块,欠爸爸490,欠妈妈490,490+490=980。加上自己的10块=990。还有1
  9. NoSQL数据库的介绍、NoSQL的产品、NoSQL数据库的分类等;
  10. chrome离线安装包下载方法
  11. Class 2 搭建简历网站
  12. 网站中网页最优色彩搭配方案学习--Java免费学习网
  13. vue3.0 ele-plus 与 antd-design的使用
  14. 有哪些盛极一时的互联网产品,现在都没落了?
  15. 网易2016在线笔试小结
  16. Linux上构筑iPhone OS3.1.2开发环境之解压firmware
  17. Python基础;个人名片制作程序
  18. 修改IDEA默认配置路径
  19. 安兰德《源泉》读后感:愿年轻人都能有志气
  20. CSS3基础入门03

热门文章

  1. andorid平台游戏内存修改器的开发思路
  2. static--静态方法与静态成员
  3. 检测到在集成的托管管道模式下不适用的ASP.NET设置
  4. UNDO 表空间管理
  5. windows server 2003 AD之FSMO角色
  6. java 字符串比较 == equals_java怎么比较字符串,==和equals有什么区别
  7. linux 中国-新手村,从新手村开始,手把手带你入门梳理内核代码
  8. java连接kafka接收不到数据_Kafka客户端无法接收消息
  9. php有哪些程序结构,PHP常用控制结构
  10. vs cpp生成h文件_lib 和 dll 的区别、生成以及使用详解