题意:中文题意不解释...

思路:分层图最短路,我们再开一维用来表示当前用了多少次免费次数,dis[i][j]就表示到达i点用了j次免费的最短路,有点DP的感觉。

当个模板用

参考:分层图最短路

代码:

#include<cstdio>
#include<set>
#include<cmath>
#include<queue>
#include<vector>
#include<cstring>
#include<algorithm>
#include<iostream>
#define ll long long
using namespace std;
const int maxn = +;
const int INF = 0x3f3f3f3f;
int dis[maxn][]; //走到i已经免费j次最短路
int vis[maxn][];
int n,m,k;
struct node{
int to,val;
node(int _t = ,int _v = ):to(_t),val(_v){}
};
vector<node> G[maxn];
void spfa(int st){
memset(dis,INF,sizeof(dis));
memset(vis,,sizeof(vis));
queue<int> q;
while(!q.empty()) q.pop();
vis[st][] = ;
dis[st][] = ;
q.push(st),q.push(); //点和当前使用免费次数
while(!q.empty()){
int u = q.front();q.pop();
int j = q.front();q.pop(); //j是用了几次免费
for(int i = ;i < G[u].size();i++){
int v = G[u][i].to;
if(dis[u][j] + G[u][i].val < dis[v][j]){ //假如不免费
dis[v][j] = dis[u][j] + G[u][i].val;
if(!vis[v][j]){
vis[v][j] = ;
q.push(v),q.push(j);
}
}
if(j < k && dis[u][j] < dis[v][j + ]){ //免费
dis[v][j + ] = dis[u][j];
if(!vis[v][j + ]){
vis[v][j + ] = ;
q.push(v),q.push(j + );
}
}
}
vis[u][j] = ;
}
}
int main(){
while(scanf("%d%d%d",&n,&m,&k) != EOF){
for(int i = ;i <= n;i++) G[i].clear();
int s,t;
scanf("%d%d",&s,&t);
++s,++t;
for(int i = ;i < m;i++){
int u,v,w;
scanf("%d%d%d",&u,&v,&w);
++u,++v;
G[u].push_back(node(v,w));
G[v].push_back(node(u,w));
}
spfa(s);
int ans = INF;
for(int i = ;i <= k;i++){
ans = min(ans,dis[t][i]);
}
printf("%d\n",ans);
}
return ;
}

BZOJ 2763 飞行路线(分层图最短路)题解的更多相关文章

  1. bzoj2763 [JLOI]飞行路线 分层图最短路

    问题描述 Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公司一共在n个城市设有业务,设这些城市分别标记为0到n-1,一共有m种航线,每种航线连接两个城市,并且航线有一定的 ...

  2. P4568 飞行路线 分层图最短路

    P4568 飞行路线 分层图最短路 分层图最短路 问题模型 求最短路时,可有\(k\)次更改边权(减为0) 思路 在普通求\(Dijkstra\)基础上,\(dis[x][j]\)多开一维\(j\)以 ...

  3. [JLOI2011]飞行路线 分层图最短路

    题目描述: Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公司一共在nn个城市设有业务,设这些城市分别标记为0到n-1,一共有m种航线,每种航线连接两个城市,并且航线有一 ...

  4. P4568 [JLOI2011]飞行路线 分层图最短路

    思路:裸的分层图最短路 提交:1次 题解: 如思路 代码: #include<cstdio> #include<iostream> #include<cstring> ...

  5. BZOJ2763: [JLOI2011]飞行路线(分层图 最短路)

    题意 题目链接 Sol 分层图+最短路 建\(k+1\)层图,对于边\((u, v, w)\),首先在本层内连边权为\(w\)的无向边,再各向下一层对应的节点连边权为\(0\)的有向边 如果是取最大最 ...

  6. 【bzoj2763】[JLOI2011]飞行路线 分层图最短路

    题目描述 Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公司一共在n个城市设有业务,设这些城市分别标记为0到n-1,一共有m种航线,每种航线连接两个城市,并且航线有一定的 ...

  7. bzoj 2763: [JLOI2011]飞行路线 -- 分层图最短路

    2763: [JLOI2011]飞行路线 Time Limit: 10 Sec  Memory Limit: 128 MB Description Alice和Bob现在要乘飞机旅行,他们选择了一家相 ...

  8. BZOJ2763[JLOI2011]飞行路线 [分层图最短路]

    2763: [JLOI2011]飞行路线 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 2523  Solved: 946[Submit][Statu ...

  9. [JLOI2011]飞行路线 (分层图,最短路)

    题目链接 Solution 建立 \(k+1\) 层图跑 \(Dijkstra\) 就好了. Code #include<bits/stdc++.h> #define ll long lo ...

  10. [bzoj2763][JLOI2011]飞行路线——分层图最短路

    水题.不多说什么. #include <bits/stdc++.h> using namespace std; const int maxn = 10010; const int maxk ...

随机推荐

  1. 国内linux 镜像

    北京理工大学开源软件镜像服务mirrors.ustc.edu.cn 开源中国社区软件镜像下载资源库mirrors.oss.org.cn 阿里云开源镜像站mirrors.aliyun.com<ig ...

  2. Docker源码分析(八):Docker Container网络(下)

    1.Docker Client配置容器网络模式 Docker目前支持4种网络模式,分别是bridge.host.container.none,Docker开发者可以根据自己的需求来确定最适合自己应用场 ...

  3. C#IIS网站应用程序池启动回收停止 .

    //添加应用程序池空间引用using System.DirectoryServices;using System.Text; using System.Text.RegularExpressions; ...

  4. {Repeater控件} Repeater控件的用法流程及实例

    一.Repeater控件的用法流程及实例: 1.首先建立一个网站,新建一个网页index.aspx. 2.添加或者建立APP_Data数据文件,然后将用到的数据库文件放到APP_Data文件夹中. 3 ...

  5. ios 去除UITextField中的空格

    NSString *qName =[userNameText.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNew ...

  6. 最小树形图(hdu4966多校联赛9)

    GGS-DDU Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total ...

  7. 详探TextRange对象--查找与选择(转载)

    TextRange对象是动态HTML(DHTML)的高级特性,使用它可以实现很多和文本有关的任务,例如搜索和选择文本.文本范围让您可以选择性的将字符.单词和句子从文档中挑选出来.TextRange对象 ...

  8. ibatis 中#和 $ 符号的区别

    1.数据类型匹配 #:会进行预编译,而且进行类型匹配(自动确定数据类型): $:不进行数据类型匹配. 2.实现方式: # 用于变量替换(先生成一个占位符,然后替换) select * from use ...

  9. Spark集群安装和WordCount编写

    一.Spark概述 官网:http://spark.apache.org/ Apache Spark™是用于大规模数据处理的统一分析引擎. 为大数据处理而设计的快速通用的计算引擎. Spark加州大学 ...

  10. Caocao's Bridges---hdu4738(桥)

    http://acm.hdu.edu.cn/showproblem.php?pid=4738 题就是求出所有的桥,然后输出桥的权值的最小值. 如果一开始是不连通的,输出0. 图有重边,需要处理, 不能 ...