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

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

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 Input

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

Sample Output

8

HINT

对于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.

 
考虑到k十分小,发现免费的话就是费用为0,所以可以将其拆成k个平面,
上面的层可以进入下面相邻的层,花费为0建边,然后k个终点,随便到
然后就ok。
1 #include
2 #include
3 #include
4 using namespace std; 5 int d[10001][11],head[10001],q[100001][2]; 6 int n,m,k,cnt,st,ed; 7 bool inq[10001][11]; 8 struct data{
int to,next,v;}e[100001]; 9 void ins(int u,int v,int w)10 {e[++cnt].to=v;e[cnt].v=w;e[cnt].next=head[u];head[u]=cnt;}11 void spfa()12 {13 int t=0,w=1;14 memset(d,127/3,sizeof(d));15 q[0][0]=st;q[0][1]=0;16 inq[st][0]=1;d[st][0]=0;17 while(t!=w)18 {19 int now=q[t][0],tmp=q[t++][1];20 if(t==100001)t=0;21 for(int i=head[now];i;i=e[i].next)22 {23 int to=e[i].to;24 if(d[now][tmp]+e[i].v

 

转载于:https://www.cnblogs.com/fengzhiyuan/p/7598957.html

你可能感兴趣的文章
【Chrome】离线版下载
查看>>
sql参数化查询语句
查看>>
python操作日期和时间的方法
查看>>
我们应该怎么去理解.net类型传递 .
查看>>
[Leetcode] Next Permutation
查看>>
类加载器实战剖析与疑难点解析
查看>>
在NodeJS中配置aws ec2
查看>>
5月29日任务 11.18 Apache用户认证 11.19/11.20 域名跳转 11.21 Apache访问日志
查看>>
堆和栈
查看>>
Etag和断点续传(转)
查看>>
atomic/nio
查看>>
git使用问题
查看>>
用StreamReader提取xml或者记事本里面的信息
查看>>
需求分析
查看>>
《将博客搬至CSDN》
查看>>
erlang 游戏服务器开发
查看>>
一个完整的socket recv()案例,包括解决粘包、服务器主动推数据的问题
查看>>
运行nodejs的blog程序遇见问题
查看>>
sql server 导出脚本和数据 (图解)
查看>>
python自然语言处理——3.7 用正则表达式为文本分词
查看>>