题目戳这里
一句话题意:

有n个点,m条边的有向图,最多可以把k条边变为0,求从起点到终点最短距离。

Solution

首先看到这题目,感觉贼难,看起来像DP,貌似也有大佬这么做,但鉴于本蒟蒻思维能力有限,经过大佬点拨后拿出了失传已久的绝技——分层图!(废话真多).
那么我们就可以愉快地建图了,根据题意,建出k+1层图,每条边从上一层到下一层的边权为0,每次从一层到下一层,就相当于用了一次0边,从0层起点到k层终点,正好用了k次。另外需要注意的是,因为边数太多,裸的SPFA会被卡。

Coding

#include<bits/stdc++.h>
using namespace std;
const int N = 1e5;
struct road
{int to,next,w;
}e[N*50+5];
int n,m,s,t,head[N*10+5],cnt,k;
inline int read()
{int X=0,w=1; char ch=0;while(ch<'0' || ch>'9') {if(ch=='-') w=-1;ch=getchar();}while(ch>='0' && ch<='9') X=(X<<3)+(X<<1)+ch-'0',ch=getchar();return X*w;
}
void add(int x,int y,int w)
{cnt++;e[cnt].w=w;e[cnt].to=y;e[cnt].next=head[x];head[x]=cnt;
}
int vis[N*10+5],dis[N*10+5];
void Dijkstra()
{memset(dis,0x3f,sizeof(dis));dis[s]=0;priority_queue<pair<int,int>,vector<pair<int,int> >,greater<pair<int,int> > > q;q.push(make_pair(0,s));while(!q.empty()){int u=q.top().second;q.pop();if(!vis[u]){vis[u]=1;for(int i=head[u];i;i=e[i].next){int v=e[i].to;if(dis[v]>dis[u]+e[i].w) {dis[v]=dis[u]+e[i].w;q.push(make_pair(dis[v],v));}}}}
}
int main()
{cin>>n>>m>>k>>s>>t;s++,t++;for(int i=1;i<=m;i++){int u,v,w;u=read(),v=read(),w=read();u++,v++;for(int j=0;j<=k;j++){add(u+j*n,v+j*n,w);add(v+j*n,u+j*n,w);}for(int j=1;j<=k;j++){add(u+(j-1)*n,v+j*n,0);add(v+(j-1)*n,u+j*n,0);}}for(int i=1;i<=k;i++)add(t+(i-1)*n,t+i*n,0);Dijkstra();cout<<dis[t+k*n];return 0;
}

转载于:https://www.cnblogs.com/Le-mon/p/9520225.html

洛谷 4568 [JLOI2011] 飞行路线相关推荐

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

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

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

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

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

    题目链接:点击查看 题目大意:给出一张图,每条边都有权值,现在要求从点st到达点ed,沿途中可以让k条边的边权免费,现在求最短路 题目分析:分层图经典模板问题,直接套板子就行了,最后记得对于数组d的每 ...

  4. 最短路分层图专题 洛谷P2939,4822,4568

    2020.6.3 今天主要练习了下分层图.看洛谷题解每次都能有新收获.今天本来想练dp,后来感觉可能会太自闭了,不如先来一发最短路,毕竟看家本领不能忘.然后点进了北京某年wc的一道题,让求1-n的最短 ...

  5. JLOI2011 飞行路线

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

  6. 洛谷-题解 P2672 【推销员】

    独门思路!链表加优先队列! 这题一望,贪心是跑不掉了,但是我贪心并不好,所以想到了一个复杂一些但思路更保稳的做法 思路: 1 因为是离线操作,所以我们可以倒着求,先求x=n的情况,因为那样直接就知道了 ...

  7. 洛谷 P1142 轰炸

    洛谷 P1142 轰炸 题目描述 "我该怎么办?"飞行员klux向你求助. 事实上,klux面对的是一个很简单的问题,但是他实在太菜了. klux要想轰炸某个区域内的一些地方,它们 ...

  8. 洛谷 P1387 最大正方形

    P1387 最大正方形 题目描述 在一个n*m的只包含0和1的矩阵里找出一个不包含0的最大正方形,输出边长. 输入输出格式 输入格式: 输入文件第一行为两个整数n,m(1<=n,m<=10 ...

  9. P4568 [JLOI2011]飞行路线

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

最新文章

  1. 网站首页head区代码规范
  2. 【MySql】在Linux下安装MySql数据库
  3. unity透明通道加颜色_Unity-雪地效果的实现
  4. 使用 Web Tracing Framework 分析富 JS 应用的性能
  5. 论文浅尝 | Interaction Embeddings for Prediction and Explanation
  6. 图论 —— 网络流 —— 费用流 —— zkw 费用流
  7. MySQL数据库操作步骤---增删改查
  8. 孩子们的游戏(圆圈中最后剩下的数)
  9. 命令以及查找帮助方法
  10. xml mysql 树形数据删除_使用递归删除树形结构的所有子节点(java和mysql实现)
  11. k8s学习笔记2-搭建harbor私有仓库
  12. Office各个windows版本支持大全
  13. 【将门创投】如何让飘在半空的计算机视觉技术与需求落地?
  14. .md文件中插入本地图片并显示图片预览
  15. python的永久存储——pickle‘泡菜’ ,‘腌制’天气查询脚本
  16. 随机点名器(java基础)
  17. 高斯混合模型(GMM--Gaussian mixture model)
  18. animator动画
  19. 中国地理知识大全 中国地理知识集锦
  20. android图片处理的工具代码

热门文章

  1. 用JavaScript获取表单里的值
  2. Kafka在ZooKeeper中的应用
  3. 在Centos7安装mysql
  4. [转]oracle查看数据文件, 控制文件, 及日志文件命令
  5. 【linux技术】分布式存储技术实战演练
  6. 局域网ip地址不够用怎么解决?
  7. mysql 数值 字符 优化,教你如何进行Mysql数据类型优化
  8. 开源 Serverless 里程碑:Knative 1.0 来了
  9. 从 “香农熵” 到 “告警降噪” ,如何提升告警精度?
  10. 抛鸡蛋html5游戏,数学智力题:扔鸡蛋计算不会碎的楼层