博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj2763: [JLOI2011]飞行路线
阅读量:5033 次
发布时间:2019-06-12

本文共 1589 字,大约阅读时间需要 5 分钟。

题目描述

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就行了。
1 #include
2 #include
3 #include
4 #include
5 #define maxn 10005 6 #define inf 1<<29 7 int head[maxn],vis[maxn][11],d[maxn][11]; 8 int ecnt,n,m,lim,s,t,ans=inf; 9 using namespace std;10 struct edge{11 int u,v,w,next;12 }E[maxn*10];13 struct node{14 int u,num;15 node(int x,int y):u(x),num(y){}16 };17 void addedge(int u,int v,int w)18 {19 E[++ecnt].u=u;20 E[ecnt].v=v;21 E[ecnt].w=w;22 E[ecnt].next=head[u];23 head[u]=ecnt;24 }25 void spfa(int x)26 {27 queue
q;28 memset(d,127/3,sizeof(d));29 d[x][0]=0;30 node now(x,0);31 node next(0,0);32 q.push(now);33 vis[x][0]=1;34 while(!q.empty())35 {36 node now=q.front();q.pop();37 int dd=now.u;38 int k=now.num;39 vis[dd][k]=0;40 for(int i=head[dd] ; i ; i=E[i].next )41 {42 int v=E[i].v;43 int w=E[i].w;44 if(d[dd][k]+w

 

转载于:https://www.cnblogs.com/fujudge/p/7496816.html

你可能感兴趣的文章
版本更新
查看>>
SQL 单引号转义
查看>>
start
查看>>
实现手机扫描二维码页面登录,类似web微信-第三篇,手机客户端
查看>>
PHP socket客户端长连接
查看>>
7、shell函数
查看>>
【转】Apache Jmeter发送post请求
查看>>
【凸优化】保留凸性的几个方式(交集、仿射变换、投影、线性分式变换)
查看>>
NYOJ-613//HDU-1176-免费馅饼,数字三角形的兄弟~~
查看>>
TFS --- GrantBackup Plan Permissions Error
查看>>
傅里叶级数与积分方程
查看>>
软工作业3:用户体验分析——以“南通大学教务管理系统微信公众号”为例
查看>>
Css:背景色透明,内容不透明之终极方法!兼容所有浏览器
查看>>
我们前端跟后端是怎么合作的
查看>>
mysql存储过程
查看>>
洛谷P2556 [AHOI2002] 黑白图像压缩 [模拟]
查看>>
letecode [136] - Single Number
查看>>
linux下设置固定IP的方法
查看>>
VMware虚拟机下Linux系统的全屏显示
查看>>
net core体系-web应用程序-4asp.net core2.0 项目实战(任务管理系统)-2项目搭建
查看>>