ACM-ICPC 2018 南京赛区网络预赛 L Magical Girl Haze(分层图+Dijkstra堆优化)

本文主要是介绍ACM-ICPC 2018 南京赛区网络预赛 L Magical Girl Haze(分层图+Dijkstra堆优化),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目链接:https://nanti.jisuanke.com/t/31001

 

题目大意:给一张有向图,给把k条边权值变0的机会,问1~n最短路

 

题目思路:把原先的dist改成二维,第二维表示删几条边, 然后迪杰斯特拉的松弛也分成两部分,一个是本身的松弛,还有一个是送到下一层,由于每一层内,最小的那个松弛以后他松弛的点继续松弛,这样就等效于只删了一条边,如此一直松弛。

 

以下是代码:

#include<bits/stdc++.h>
using namespace std;
#define inf 0x3f3f3f3f
#define MAXN 100005
#define rep(i,a,b) for(int i=a;i<=b;i++)
#define per(i,a,b) for(int i=a;i>=b;i--)
#define ll long long
struct Edge{int to,w,next;
}edge[MAXN<<1];
struct node{int v,c,cnt;bool operator <(const node &r)const{return c>r.c;}
}a;
int head[MAXN],tot,k;
void addedge(int u,int v,int w){edge[tot].to=v,edge[tot].w=w,edge[tot].next=head[u],head[u]=tot++;
}
bool vis[MAXN][15];
ll dist[MAXN][15];
void dij(int n,int s){memset(vis,false,sizeof(vis));memset(dist,0x3f,sizeof(dist));priority_queue<node>q;while(!q.empty())q.pop();dist[s][0]=0;a.v=s,a.c=a.cnt=0;q.push(a);while(!q.empty()){node temp=q.top();q.pop();int u=temp.v,cnt=temp.cnt;if(vis[u][cnt])continue;vis[u][cnt]=1;for(int i=head[u];i!=-1;i=edge[i].next){int v=edge[i].to,w=edge[i].w;if(!vis[v][cnt]&&dist[v][cnt]>dist[u][cnt]+w){dist[v][cnt]=dist[u][cnt]+w;a.v=v,a.c=dist[v][cnt],a.cnt=cnt;q.push(a);}if(cnt<k&&dist[v][cnt+1]>dist[u][cnt]){dist[v][cnt+1]=dist[u][cnt];a.v=v,a.c=dist[u][cnt],a.cnt=cnt+1;q.push(a);}}}
}
int main()
{int t,n,m,u,v,w;scanf("%d",&t);while(t--){scanf("%d%d%d",&n,&m,&k);tot=0;memset(head,-1,sizeof(head));while(m--){scanf("%d%d%d",&u,&v,&w);addedge(u,v,w);}dij(n,1);printf("%lld\n",dist[n][k]);}return 0;
}

 

这篇关于ACM-ICPC 2018 南京赛区网络预赛 L Magical Girl Haze(分层图+Dijkstra堆优化)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/914067

相关文章

SpringBoot首笔交易慢问题排查与优化方案

《SpringBoot首笔交易慢问题排查与优化方案》在我们的微服务项目中,遇到这样的问题:应用启动后,第一笔交易响应耗时高达4、5秒,而后续请求均能在毫秒级完成,这不仅触发监控告警,也极大影响了用户体... 目录问题背景排查步骤1. 日志分析2. 性能工具定位优化方案:提前预热各种资源1. Flowable

SpringBoot3实现Gzip压缩优化的技术指南

《SpringBoot3实现Gzip压缩优化的技术指南》随着Web应用的用户量和数据量增加,网络带宽和页面加载速度逐渐成为瓶颈,为了减少数据传输量,提高用户体验,我们可以使用Gzip压缩HTTP响应,... 目录1、简述2、配置2.1 添加依赖2.2 配置 Gzip 压缩3、服务端应用4、前端应用4.1 N

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

Python如何使用__slots__实现节省内存和性能优化

《Python如何使用__slots__实现节省内存和性能优化》你有想过,一个小小的__slots__能让你的Python类内存消耗直接减半吗,没错,今天咱们要聊的就是这个让人眼前一亮的技巧,感兴趣的... 目录背景:内存吃得满满的类__slots__:你的内存管理小助手举个大概的例子:看看效果如何?1.

一文详解SpringBoot响应压缩功能的配置与优化

《一文详解SpringBoot响应压缩功能的配置与优化》SpringBoot的响应压缩功能基于智能协商机制,需同时满足很多条件,本文主要为大家详细介绍了SpringBoot响应压缩功能的配置与优化,需... 目录一、核心工作机制1.1 自动协商触发条件1.2 压缩处理流程二、配置方案详解2.1 基础YAML

SpringBoot使用OkHttp完成高效网络请求详解

《SpringBoot使用OkHttp完成高效网络请求详解》OkHttp是一个高效的HTTP客户端,支持同步和异步请求,且具备自动处理cookie、缓存和连接池等高级功能,下面我们来看看SpringB... 目录一、OkHttp 简介二、在 Spring Boot 中集成 OkHttp三、封装 OkHttp

MySQL中慢SQL优化的不同方式介绍

《MySQL中慢SQL优化的不同方式介绍》慢SQL的优化,主要从两个方面考虑,SQL语句本身的优化,以及数据库设计的优化,下面小编就来给大家介绍一下有哪些方式可以优化慢SQL吧... 目录避免不必要的列分页优化索引优化JOIN 的优化排序优化UNION 优化慢 SQL 的优化,主要从两个方面考虑,SQL 语