2018 ICPC南京网络赛 L Magical Girl Haze 题解
大致题意:
    给定一个n个点m条边的图,在可以把路径上至多k条边的权值变为0的情况下,求S到T的最短路。
数据规模: N≤100000,M≤200000,K≤10
建一个立体的图,有k层,每一层是一份原图,消耗一次把一条边权值变为0的机会 = 在立体图中升一层
然后跑堆优化dij就好了,会卡spfa。
AC代码:
#include<cstdio>
#include<queue>
#include<cstring>
#define rep(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
const int MAXN=;
const int MAXM=;
typedef pair<long long,pair<int,int> > pii;
priority_queue<pii,vector<pii>,greater<pii> > q;
bool visit[MAXN][];
int pointer[MAXN];
long long d[MAXN][];
int n,m,k,tot=,S,T;
const long long INF=1e17;
struct Edge
{
int to,next;
long long w;
Edge() {};
Edge(int b,int nxt,int weight) {to=b,next=nxt,w=weight;}
}edge[MAXM];
inline void addedge(int a,int b,int w1)
{
edge[tot]=Edge(b,pointer[a],w1);
pointer[a]=tot++;
}
void dijkstra()
{
rep(i,S,T) rep(z,,k) d[i][z]=INF;
d[S][]=;
memset(visit,,sizeof(visit));
q.push(make_pair(d[S][],make_pair(S,)));
while(!q.empty())
{
pii u=q.top();q.pop();
int x=u.second.first,stp=u.second.second;
if(visit[x][stp]) continue;
visit[x][stp]=;
for(int j=pointer[x];j!=-;j=edge[j].next)
{
int &v=edge[j].to;
if(d[v][stp]>d[x][stp]+edge[j].w)
{
d[v][stp]=d[x][stp]+edge[j].w;
q.push(make_pair(d[v][stp],make_pair(v,stp)));
}
if(stp<k&&d[v][stp+]>d[x][stp])
{
d[v][stp+]=d[x][stp];
q.push(make_pair(d[v][stp+],make_pair(v,stp+)));
}
}
}
}
void init()
{
tot=;
memset(pointer,-,sizeof(pointer));
}
void Input()
{
scanf("%d%d%d",&n,&m,&k);
int u,v;
long long w;
rep(i,,m)
{
scanf("%d%d%lld",&u,&v,&w);
addedge(u,v,w);
}
S=;T=n;
}
int main()
{
//freopen("in.txt","r",stdin);
int TT;
scanf("%d",&TT);
rep(tt,,TT)
{
init();
Input();
dijkstra();
long long ans=INF;
rep(i,,k) ans=min(ans,d[n][i]);
printf("%lld\n",ans);
}
return ;
}
2018 ICPC南京网络赛 L Magical Girl Haze 题解的更多相关文章
- 2018icpc南京网络赛-L Magical Girl Haze (分层图最短路)
		
题意: 有向图,可以把k条路的长度变为0,求1到n的最短路 思路: 将图复制k份,一共k+1层图,对于每一条i→j,都连一条低层的i→高层的j,并且权值为0 即对每一对<i,j,w>,都加 ...
 - ICPC 2018 南京网络赛 J Magical Girl Haze(多层图最短路)
		
传送门:https://nanti.jisuanke.com/t/A1958 题意:n个点m条边的路,你有k次机会将某条路上的边权变为0,问你最短路径长度 题解:最短路变形,我们需要在常规的最短路上多 ...
 - 【2018 ICPC南京网络赛 A】An Olympian Math Problem(数论题)
		
Alice, a student of grade 6, is thinking about an Olympian Math problem, but she feels so despair th ...
 - 2018 ICPC南京网络赛 Set(字典树 + 合并 + lazy更新)
		
题解:n个集合,你要进行m个操作.总共有3种操作.第一种,合并两个集合x和y.第二张,把特定的集合里面所有的数字加一.第三种,询问在某个集合里面,对于所有数字对2的k次方取模后,有多少个数字等于x. ...
 - 2018 ICPC 沈阳网络赛
		
2018 ICPC 沈阳网络赛 Call of Accepted 题目描述:求一个算式的最大值与最小值. solution 按普通算式计算方法做,只不过要同时记住最大值和最小值而已. Convex H ...
 - 2018 ICPC 徐州网络赛
		
2018 ICPC 徐州网络赛 A. Hard to prepare 题目描述:\(n\)个数围成一个环,每个数是\(0\)~\(2^k-1\),相邻两个数的同或值不为零,问方案数. solution ...
 - 2018 ICPC 焦作网络赛 E.Jiu Yuan Wants to Eat
		
题意:四个操作,区间加,区间每个数乘,区间的数变成 2^64-1-x,求区间和. 题解:2^64-1-x=(2^64-1)-x 因为模数为2^64,-x%2^64=-1*x%2^64 由负数取模的性质 ...
 - 2018南京网络赛L题:Magical Girl Haze(最短路分层图)
		
题目链接:https://nanti.jisuanke.com/t/31001 解题心得: 一个BZOJ的原题,之前就写过博客了. 原题地址:https://www.lydsy.com/JudgeOn ...
 - 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 ...
 
随机推荐
- JSP动作标签flush属性值
			
在JSP动作标签<jsp:include flush="true"/>,flush属性可以为true或false.flush默认值为false,当把flush属性赋值为 ...
 - PDF 补丁丁 0.6.0.3288 版发布(修复“合并文件”功能的文件夹文件排序问题)
			
新的测试版修复了合并文件功能中添加名称带有“.”点号的文件夹时无法正常排序文件的问题. 使用合并文件功能的用户建议更新.
 - LVS初始使用步骤
			
LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 是一个由章文嵩博士发起的自由软件项目,它的官方站点是www.linuxvirtualserver.org. 现在L ...
 - JS JQ 深拷贝之坑
			
之前做留言板的时候,我就被深拷贝坑了一次,这次做API管理系统,没想到又被深拷贝坑了一次. 最后,拷贝对象的时候,如果要用到对象里的prototype,一定要用$.extend(true,{},要拷贝 ...
 - linux IPtable防火墙 禁止和开放端口
			
1.关闭所有的 INPUT FORWARD OUTPUT 只对某些端口开放.下面是命令实现: iptables -P INPUT DROPiptables -P FORWARD DROPiptable ...
 - mybatis使用接口联合查询
			
一.先建立两个实体类和配置文件 配置文件 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE c ...
 - 最新的 cocoapods 安装与使用(2019.04)
			
cocoapods简介: cocoapods 是iOS的类库管理工具,可以让开发者很方便集成各种第三方库,而不用去网站上一个个下载,再一个个文件夹的拖进项目中,还得添加相关的系统依赖库.只需要安装好c ...
 - 洛谷P2886 [USACO07NOV]牛继电器Cow Relays
			
题意很简单,给一张图,把基本的求起点到终点最短路改成求经过k条边的最短路. 求最短路常用的算法是dijkstra,SPFA,还有floyd. 考虑floyd的过程: c[i][j]=min(c[i][ ...
 - UnboundLocalError: local variable 'f' referenced before assignment
			
参考方案链接: 1.http://blog.chinaunix.net/uid-631981-id-3766212.html 2.http://blog.sina.com.cn/s/blog_4b9e ...
 - swiper使用中一些点的总结
			
最近做了PC端改版,要求移动端有更好的体验,一些产品滚屏的展示,就用了swiper插件,以方便用户在移动端访问可以滑动翻屏展示. 本次项目中使用的是swiper2.0版本. 首先要引入swiper的j ...