BZOJ 2763: [JLOI2011]飞行路线 【SPFA】
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;
}
BZOJ 2763: [JLOI2011]飞行路线 【SPFA】的更多相关文章
- BZOJ 2763: [JLOI2011]飞行路线 spfa dp
题目链接: http://www.lydsy.com/JudgeOnline/problem.php?id=2763 题解: d[x][kk]表示从s到x用了kk次免费机会的最少花费. 代码: #in ...
- Bzoj 2763: [JLOI2011]飞行路线 拆点,分层图,最短路,SPFA
2763: [JLOI2011]飞行路线 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1694 Solved: 635[Submit][Statu ...
- 分层图+最短路算法 BZOJ 2763: [JLOI2011]飞行路线
2763: [JLOI2011]飞行路线 Time Limit: 10 Sec Memory Limit: 128 MB Description Alice和Bob现在要乘飞机旅行,他们选择了一家相 ...
- poj 2763: [JLOI2011]飞行路线(spfa分层图最短路)
2763: [JLOI2011]飞行路线 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 2156 Solved: 818 [Submit][Statu ...
- Bzoj 2763: [JLOI2011]飞行路线 dijkstra,堆,最短路,分层图
2763: [JLOI2011]飞行路线 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1728 Solved: 649[Submit][Statu ...
- BZOJ 2763: [JLOI2011]飞行路线 最短路
2763: [JLOI2011]飞行路线 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/pr ...
- bzoj 2763: [JLOI2011]飞行路线 -- 分层图最短路
2763: [JLOI2011]飞行路线 Time Limit: 10 Sec Memory Limit: 128 MB Description Alice和Bob现在要乘飞机旅行,他们选择了一家相 ...
- BZOJ 2763: [JLOI2011]飞行路线 【分层图模板】
任意门:https://www.lydsy.com/JudgeOnline/problem.php?id=2763 2763: [JLOI2011]飞行路线 Time Limit: 10 Sec M ...
- bzoj 2763: [JLOI2011]飞行路线【分层图+spfa】
为什么早年的题总是从0开始标号啊--又zz了一次WA 分层图的题只有这一个套路吧,建分层图,然后优化时间是分层跑spfa然后层与层之间单独跑即可 #include<iostream> #i ...
随机推荐
- P2345 奶牛集会andP2657 低头一族
做法是一样的 题目背景 MooFest, Open 题目描述 约翰的N 头奶牛每年都会参加“哞哞大会”.哞哞大会是奶牛界的盛事.集会上的活动很 多,比如堆干草,跨栅栏,摸牛仔的屁股等等.它们参加活动时 ...
- 【学习笔记】using namespace std 的作用
C++编程时几乎每次都敲上using namespace std;但这行代码究竟有什么作用呢? C++标准程序库中的所有标识符都被定义于一个名为std的namespace中. 早些的编码将标准库功能定 ...
- FragmentTabHost实现标签卡效果
转载请注明原文链接:http://www.cnblogs.com/yanyojun/p/8099523.html 代码已上传到github:https://github.com/YanYoJun/Fr ...
- isEqual ,判断两个对象或变量是否相等
function isEqual(a, b) { //如果a和b本来就全等 if (a === b) { //判断是否为0和-0 return a !== 0 || 1 / a === 1 / b; ...
- python3写冒泡排序
1.概念理解: 冒泡排序:可以简单的理解为是列表中相近的元素,两两比较,小的在前面.最多需要len()-1次排序. 2.例子:a=[11,7,4,56,35,0] 3.代码实现: 4.输出结果: 第1 ...
- 微信小程序入口场景的问题整理与相关解决方案
前言 最近一段时间都在做小程序. 虽然是第二次开发小程序,但是上次做小程序已经是一年前的事了,所以最终还是被坑得死去活来. 这次是从零开始开发一个小程序,其实除了一些莫名其妙的兼容性问题,大多数坑点都 ...
- SQL 中 NOT IN 查询不到数据
一.问题 用以下sql语句查询数据,结果为空 SELECT a.ID , a.Sub_Project_Name , a.Sub_Project_Type FROM TB_KYSubProject a ...
- 122. Best Time to Buy and Sell Stock II@python
Say you have an array for which the ith element is the price of a given stock on day i. Design an al ...
- 2018 CCPC 女生赛 hdoj6288 缺失的数据范围
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=6288 Summarize:1.二分查找答案: 2.自带log函数精度不够,需自己写: 3.注意二分递归 ...
- 关于inet_ntop、inet_pton中的n和p分别代表的意义
函数名中的p和n非别代表表达(presentation)和数值(numeric).地址的表达格式通常是ASCII字符串,数值格式则是存放到套接字地址结构中的二进制值. 参考自:https://blog ...