大致题意:
    给定一个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 题解的更多相关文章

  1. 2018icpc南京网络赛-L Magical Girl Haze (分层图最短路)

    题意: 有向图,可以把k条路的长度变为0,求1到n的最短路 思路: 将图复制k份,一共k+1层图,对于每一条i→j,都连一条低层的i→高层的j,并且权值为0 即对每一对<i,j,w>,都加 ...

  2. ICPC 2018 南京网络赛 J Magical Girl Haze(多层图最短路)

    传送门:https://nanti.jisuanke.com/t/A1958 题意:n个点m条边的路,你有k次机会将某条路上的边权变为0,问你最短路径长度 题解:最短路变形,我们需要在常规的最短路上多 ...

  3. 【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 ...

  4. 2018 ICPC南京网络赛 Set(字典树 + 合并 + lazy更新)

    题解:n个集合,你要进行m个操作.总共有3种操作.第一种,合并两个集合x和y.第二张,把特定的集合里面所有的数字加一.第三种,询问在某个集合里面,对于所有数字对2的k次方取模后,有多少个数字等于x. ...

  5. 2018 ICPC 沈阳网络赛

    2018 ICPC 沈阳网络赛 Call of Accepted 题目描述:求一个算式的最大值与最小值. solution 按普通算式计算方法做,只不过要同时记住最大值和最小值而已. Convex H ...

  6. 2018 ICPC 徐州网络赛

    2018 ICPC 徐州网络赛 A. Hard to prepare 题目描述:\(n\)个数围成一个环,每个数是\(0\)~\(2^k-1\),相邻两个数的同或值不为零,问方案数. solution ...

  7. 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 由负数取模的性质 ...

  8. 2018南京网络赛L题:Magical Girl Haze(最短路分层图)

    题目链接:https://nanti.jisuanke.com/t/31001 解题心得: 一个BZOJ的原题,之前就写过博客了. 原题地址:https://www.lydsy.com/JudgeOn ...

  9. 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 ...

随机推荐

  1. js中Array数组基本方法

    总结:push() 添加元素到数组未尾, 返回数组长度 unshift() 添加元素到数组头部, 返回数组长度 pop() 删除数组未尾元素, 返回删除元素 shift() 删除数组头部元素, 返回删 ...

  2. iOS 性能优化总结

    卡顿产生的原因 在 VSync信号到来后,系统图形服务会通过 CADisplayLink等机制通知 App,App主线程开始在 CPU中计算显示内容,比如视图的创建.布局计算.图片解码.文本绘制等.随 ...

  3. CloudStack 云计算平台框架

    前言 CloudStack 和OpenStack 一样都是IaaS层 开源框架,可以管理XenServer.ESXI.KVM.OVM等主流虚拟机,相对OpenStack比较简单.稳定: 二.Cloud ...

  4. Daily record-October

    October 11. Hope is a good thing, maybe the best of things, and no good thing ever dies. 希望是美好的,也许是人 ...

  5. DBLookupCombobox实现下拉联动

    这次用DBLookupCombobox实现省份-城市-地区的下拉联动,用以学习DBLookupCombobox的一些用法 效果图: 首先建立数据表(数据表形式可以多种多样:数据库表.文本.xml等,最 ...

  6. 跟随我在oracle学习php(16)

    数据库的增删改查 增:create  database  [if  not  exists ] 数据库名  [charset  字符集]  [collate  字符排序规则]: 说明: 1,if  n ...

  7. 《用Python写爬虫》学习笔记(一)

    注:纯文本内容,代码独立另写,属于本人学习总结,无任何商业用途,在此分享,如有错误,还望指教. 1.为什么需要爬虫? 答:目前网络API未完全放开,所以需要网络爬虫知识. 2.爬虫的合法性? 答:爬虫 ...

  8. 软件151 王楚博 maven的导入

    一.maven 包的导入 清单如下: <!-- Inherit defaults from Spring Boot --> <parent> <groupId>or ...

  9. flask 第五章 WebSocket GeventWebsocket 单聊群聊 握手 解密 加密

    1.WebSocket 首先我们来回顾一下,我们之前用socket学习过的项目有: 1.django 2.flask 3.FTP - 文件服务 HTTP - TCP (特点): 1.一次请求,一次响应 ...

  10. SoapUI之http接口测试

    SoapUI是一个开源测试工具,可以进行webservice/http协议的功能.负载.安全性测试.SoapUI pro是SoapUI的商业非开源版本,实现的功能会更多一点.一般的测试场景,用开源版本 ...