ACM-ICPC 2018 南京赛区网络预赛 L 【分层图最短路】
<题目链接>
题目大意:
有N个城市,这些城市之间有M条有向边,每条边有权值,能够选择K条边 边权置为0,求1到N的最短距离。
解题分析:
分层图最短路模板题,将该图看成 K+1 层图,然后具体解析见代码:
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #include <queue> using namespace std; #define INF 0x7ffffffffff; ; ; typedef long long ll; int n,m,k,tot,cnt; int head[M]; ]; struct EDGE{ int to; int next; ll val; }edge[M<<]; struct NODE{ int loc,cal; //loc代表该点的标号,cal代表该点所在的层数,这两个变量可以确定分层图中所有点的位置 ll dist; bool operator <(const NODE &tmp)const{ return dist>tmp.dist; } NODE(,,ll w=){ loc=a,cal=b,dist=w; } }d[N][]; void init(){ cnt=; memset(head,-,sizeof(head)); } void add(int u,int v,int w){ edge[++cnt].to=v,edge[cnt].val=w; edge[cnt].next=head[u],head[u]=cnt; } void dij(){ memset(vis,false,sizeof(vis)); ;i<=n;i++){ ;j<=k;j++){ d[i][j].dist=INF; //将所有点到起点的距离初始化为无穷大 } } d[][].dist=; priority_queue<NODE>q; q.push(NODE(,,d[][].dist)); while(!q.empty()){ NODE now=q.top(); q.pop(); int tmp1=now.loc,tmp2=now.cal; if(vis[tmp1][tmp2])continue; vis[tmp1][tmp2]=true; for(int i=head[tmp1];~i;i=edge[i].next){ int v=edge[i].to; ll cost=edge[i].val; if(d[v][tmp2].dist>d[tmp1][tmp2].dist+cost){ //在同一层中进行普通的松弛操作,表示当前道路的权值不用置为0 d[v][tmp2].dist=d[tmp1][tmp2].dist+cost; q.push(NODE(v,tmp2,d[v][tmp2].dist)); } <=k&&d[v][tmp2+].dist>d[tmp1][tmp2].dist){ //没有加上cost,代表 tmp1-->v 这段路的权值置为0 d[v][tmp2+].dist=d[tmp1][tmp2].dist; q.push(NODE(v,tmp2+,d[v][tmp2+].dist)); } } } } int main(){ int T;scanf("%d",&T); while(T--){ init(); scanf("%d%d%d",&n,&m,&k); ;i<=m;i++){ int u,v;ll w; scanf("%d%d%lld",&u,&v,&w); add(u,v,w); } dij(); ll mn=INF; ;i<=k;i++){ //在所有层中选取最短的情况 mn=min(mn,d[n][i].dist); } printf("%lld\n",mn); } ; }
2018-09-12
ACM-ICPC 2018 南京赛区网络预赛 L 【分层图最短路】的更多相关文章
- ACM-ICPC 2018 南京赛区网络预赛 L. Magical Girl Haze
262144K There are NN cities in the country, and MM directional roads from uu to v(1\le u, v\le n)v ...
- ACM-ICPC 2018 南京赛区网络预赛 L题(分层最短路)
题目链接:https://nanti.jisuanke.com/t/31001 题目大意:给出一个含有n个点m条边的带权有向图,求1号顶点到n号顶点的最短路,可以使<=k条任意边的权值变为0. ...
- ACM-ICPC 2018 南京赛区网络预赛 L题(分层图,堆优化)
题目链接: https://nanti.jisuanke.com/t/31001 超时代码: #include<bits/stdc++.h> using namespace std; # ...
- ACM-ICPC 2018 南京赛区网络预赛 L.Magical Girl Haze(分层最短路)
There are N cities in the country, and M directional roads from u to v(1≤u,v≤n). Every road has a di ...
- ACM-ICPC 2018 南京赛区网络预赛 L. Magical Girl Haze 最短路+分层图
类似题解 There are NN cities in the country, and MM directional roads from uu to v(1\le u, v\le n)v(1≤u, ...
- ACM-ICPC 2018 南京赛区网络预赛 - L Magical Girl Haze (分层迪杰斯特拉)
题意:N个点,M条带权有向边,求可以免费K条边权值的情况下,从点1到点N的最短路. 分析:K<=10,用dist[i][j]表示从源点出发到点i,免费j条边的最小花费.在迪杰斯特拉的dfs过程中 ...
- ACM-ICPC 2018 南京赛区网络预赛 L && BZOJ 2763 分层最短路
https://nanti.jisuanke.com/t/31001 题意 可以把k条边的权值变为0,求s到t的最短路 解析 分层最短路 我们建立k+1层图 层与层之间边权为0,i 向 i+1层转 ...
- 【ACM-ICPC 2018 南京赛区网络预赛 L】Magical Girl Haze
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 定义dis[i][j]表示到达i这个点. 用掉了j次去除边的机会的最短路. dis[1][0]= 0; 在写松弛条件的时候. 如果用 ...
- ACM-ICPC 2018 南京赛区网络预赛 L. Magical Girl Haze (分层dijkstra)
There are NN cities in the country, and MMdirectional roads from uu to v(1\le u, v\le n)v(1≤u,v≤n). ...
随机推荐
- Go 开源博客平台 Pipe 1.0.0 发布!
这是 Pipe 博客平台的第一个正式版,欢迎大家使用和反馈建议! 简介 Pipe 是一款小而美的开源博客平台,通过黑客派账号登录即可使用. 动机 产品层面: 市面上缺乏支持多独立博客的平台级系统 实现 ...
- SSM框架整合篇
目录 SSM整合 框架搭建步骤 SSM整合 Author:SimpleWu github(已上传SSMrest风格简单增删该查实例):https://gitlab.com/450255266/code ...
- CF919F
题意: Alice和Bob玩游戏,每人各有8张牌,牌的大小在0~4之间 每次操作,先手可以选择自己一张牌和对方一张牌求和后%5,将新的牌替代自己拿出的那张牌,以此类推,直到有一个人手中的牌全部是0,则 ...
- 实现本地svn目录同步时,服务器的相应目录保持自动同步
提交一个TEST文件夹 但是服务器上并没有显示 而新检出的目录却有 这个时候需要手动去update才会显示,而不可能每次都去update,所以,就用到配置自动更新 1.创建svn目录:mkdir /v ...
- Python中字符串的截取,列表的截取
字符串的截取 Python中的字符串用单引号 ' 或双引号 " 括起来,同时使用反斜杠 \ 转义特殊字符. 字符串的截取的语法格式如下: 变量[头下标:尾下标] 索引值以 0 为开始值,-1 ...
- 流媒体服务器SRS部署
github地址:https://github.com/ossrs/srs 1,srs下载 http://ossrs.net/srs.release/releases/index.html 选择正式发 ...
- 自动把动态的jsp页面(或静态html)生成PDF文档,并且上传至服务器
置顶2017年11月06日 14:41:04 阅读数:2311 这几天,任务中有一个难点是把一个打印页面自动给生成PDF文档,并且上传至服务器,然而公司框架只有手动上传文档,打印时可以保存为PDF在本 ...
- jenkins默认会存放目录
jenkins默认会存放在用户主目录下的.jenkins文件夹中 如:Linux root用户:/root/.jenkins 注意:这是linux版本的.windows系统请自行更改.这个值在Jenk ...
- Update openssh7.9 on centos6
一.制作RPM安装包1)依赖安装yum install rpm-build gcc make wget openssl-devel krb5-devel pam-devel libX11-devel ...
- jquery toast插件
插件描述:Toaster.js是一款Material Design风格jquery toast插件.Toaster.js提供5种主题,以及众多配置参数,用于显示toast类型的消息提示框.兼容性如下: ...