ACWing:178. 第K短路 (A*算法)

news/2025/3/18 22:25:54/

178. 第K短路 - AcWing题库

ac代码:

#include<iostream>
#include<cstring>
#include<queue>
using namespace std;
const int N=1010;
const int M=20020;
struct node{int d,end,d1;bool operator <(const node &x)const{return d>x.d;}
};
priority_queue<node>pq;
int dis[N],vis[N],h1[M],h2[M],ne[M],v[M],w[M],cnt[N];
int n,m,s,t,k,idx;
int ct=0;
void add(int h[],int ui,int vi,int wi){ne[++idx]=h[ui]; h[ui]=idx;v[idx]=vi;w[idx]=wi;
}
void dij(){pq.push({0,t});while(pq.size()){node tmp=pq.top(); pq.pop();if(vis[tmp.end]) continue;vis[tmp.end]=1; dis[tmp.end]=tmp.d;for(int i=h2[tmp.end];i;i=ne[i]){if(vis[v[i]]) continue;pq.push({tmp.d+w[i],v[i]});}}
} 
int A(){pq.push({dis[s],s,0});while(pq.size()){node tmp=pq.top(); pq.pop();cnt[tmp.end]++;if(tmp.end==t){  ct++; if(ct==k) return tmp.d;}if(cnt[tmp.end]>k) continue;for(int i=h1[tmp.end];i;i=ne[i]){pq.push({tmp.d1+w[i]+dis[v[i]],v[i],tmp.d1+w[i]});}}return -1;
}
int main(){scanf("%d%d",&n,&m);while(m--){int ui,vi,wi;scanf("%d%d%d",&ui,&vi,&wi);add(h1,ui,vi,wi);add(h2,vi,ui,wi);}scanf("%d%d%d",&s,&t,&k);if(s==t) k++;dij(); printf("%d",A());return 0;
}

 


http://www.ppmy.cn/news/1580174.html

相关文章

Linux》Ubuntu》Docker >>安装中文版GitLab compose

创建文件夹 因为linux 自己安装软件 不成名的规定 一般放在 》》/usr/local 中 在 /usr/local 目录 创建 gitlab 文件夹 cd /usr/local mkdir gitlab cd gitlab 创建 docker-compose.yml 文件 vim docker-compose.yml # vim 命令 若没有这个docker-compose.yml 文件则 创建同时…

Matlab 舰载机自动着舰控制系统研究

1、内容简介 Matlab 188-舰载机自动着舰控制系统研究 可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 4、参考论文 略

php开发转go的学习计划及课程资料信息

以下是为该课程体系整理的配套教材和教程资源清单,包含书籍、视频、官方文档和实战项目资源,帮助你系统化学习: Go语言学习教材推荐(PHP开发者适配版) 一、核心教材(按学习阶段分类) 1. 基础语法阶段(阶段一) 资源类型名称推荐理由链接/获取方式官方教程Go语言之旅交…

云原生大佬重生,记忆逐步复苏(十三:selinux模块)

目录 1&#xff1a;什么是selinux 1.1 SELinux 的作用 1.2. SELinux 的工作原理 1.3. SELinux 的运行模式 2:解析selinux文件上下文标签策略 3&#xff1a;selinux的布尔值 4:调查和解决selinux问题 1&#xff1a;什么是selinux SELinux&#xff08;Security-Enhanced L…

WebSocket 使用教程:从原理到实践

随着互联网应用的普及和发展&#xff0c;实时通信的需求变得越来越重要。无论是即时聊天、在线游戏&#xff0c;还是实时金融数据推送&#xff0c;低延迟的双向通信显得尤为关键。WebSocket 协议正是为了解决传统 HTTP 协议无法满足实时通信需求而诞生的。本文将从 WebSocket 的…

leetcode0056. 合并区间 - medium

1 题目&#xff1a;合并区间 官方难度 - 中等 以数组 intervals 表示若干个区间的集合&#xff0c;其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间&#xff0c;并返回 一个不重叠的区间数组&#xff0c;该数组需恰好覆盖输入中的所有区间 。 示例 1…

leetcode29. 两数相除-medium

1 题目&#xff1a;两数相除 官方标定难度&#xff1a;中 给你两个整数&#xff0c;被除数 dividend 和除数 divisor。将两数相除&#xff0c;要求 不使用 乘法、除法和取余运算。 整数除法应该向零截断&#xff0c;也就是截去&#xff08;truncate&#xff09;其小数部分。…

创客匠人创始人IP变现大课将于3月在成都举办 助力知识付费转型

2025年3月15日至17日&#xff0c;由IP变现整体解决方案服务商创客匠人主办的“创始人IP变现大课”将在成都生物城凯悦嘉轩酒店举行。本次活动旨在为知识付费行业从业者提供系统化方法论与实战指导&#xff0c;解决创始人IP在流量获取、变现模式及同质化竞争中的核心痛点。 作为…