[蓝桥杯练习]蓝桥王国

单源最短路径问题-dj

在这里插入图片描述
在这里插入图片描述

#include<bits/stdc++.h>
#define ll long long  
using namespace std;
const int N=3e5+5,M=1e6+5;
const ll INF=0x7f7f7f7f7f7f7f;//7个7f没问题,INF <= INF+x 
struct edge{int to;ll w;edge(int end,ll cost){to=end;w=cost;}
};
struct node{int id;ll setdis;//id:结点;setdis:这个结点到集合内的点最短的距离node(int num,ll len){id=num;setdis=len;}bool operator <(const node& cur)const{return setdis > cur.setdis;}//小根堆按照dis的升序来排序自定义的node对象//{return cur.dis < dis;}  //大根堆按照dis的降序来排序自定义的node对象//要将 < 运算符重载为适用于小根堆需要确保当 新结点cur的dis值 < 当前对象的dis值时,函数返回true。//*this(隐式参数)代表当前对象,即调用运算符重载函数的对象//将具有较小dis值的节点被放置在更接近堆顶的层次
};
vector<vector<edge>>adjtable(M);
priority_queue<node>wait;//小根堆,优先队列,存结点信息,弹出距离集合最近节点
int n,m;
ll setdis[N];//记录所有结点到集合的最近距离
bool hasmin[M];//hasmin[i]=true表示到结点i的最短路径已经找到
bool haspath[N];//如果不想用INF判定,则开个数组表示是否有通路
int pre[N];//记录前驱结点,用于生成路径
void print_path(int start,int end){		  //打印从s到t的最短路if(start==end){cout<<start;return;}  	   //打印起点print_path(start,pre[end]);                //先打印前一个点cout<<end;			                      //后打印当前点。最后打印的是终点t
}
void dj(){while(!wait.empty()){node cur = wait.top();wait.pop();//小根堆,弹出距起点start距离最小的结点minnodeif(hasmin[cur.id])continue;//丢弃已经找到最短路径的结点hasmin[cur.id]=true;haspath[cur.id]=true;//标记已访问 和有最短路径 for(edge adj:adjtable[cur.id]){//检查当前点的所有邻边if(hasmin[adj.to])continue;//丢弃已经找到最短路径的邻居结点 if(setdis[adj.to] > adj.w + cur.setdis){//如果邻点到起点的距离 大于 若当前点到起点的距离 + 邻点到当前点的边权 ,则更新邻点到起点的距离为中转当前点再过去的两端距离和 setdis[adj.to] = adj.w + cur.setdis;//邻点最短距离=邻边权重+最近点到起点的距离wait.push(node(adj.to,setdis[adj.to]));//扩展新的邻居,放到优先队列中//pre[adj.to]=cur.id;		//如果有需要,记录路径
}	}	}	
// print_path(s,n);          			  //如果有需要,打印路径: 起点1,终点n
}
int main(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);memset(setdis,INF,sizeof(setdis));//memset是按字节赋值,所以应当是0x7f 
//	for(ll x:sdis)x=0x7f7f7f7f7f7f7f;  //循环应该是赋真值 memset(hasmin,false,sizeof(hasmin));cin>>n>>m;while(m--){int v1,v2;ll w;cin>>v1>>v2>>w;adjtable[v1].push_back(edge(v2,w));// adjtable[v2].push_back(edge(v1,w));    //无向图或重边}int start_id;//cin>>start_id;start_id=1;//haspath[start_id]可以不加,但是最好加上 wait.push(node(start_id,0));//起点进队列,起点到自己的距离是0setdis[start_id]=0;dj();for(int i=1;i<=n;++i){//输出到每个点的最短路径
//		if(setdis[i]>=0x7f7f7f7f7f7f7f)cout<<"-1 ";if(!haspath[i])cout<<"-1 ";else cout<<setdis[i]<<" ";}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/298420.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

B3631 单向链表(结构体模拟链表)

输入格式 第一行一个整数 q表示操作次数。 接下来 q行&#xff0c;每行表示一次操作&#xff0c;操作具体间题目描述。 输出格式 对于每个操作 2&#xff0c;输出一个数字&#xff0c;用换行隔开。 #include<iostream> #include<map> #include<algorithm> …

vue给input密码框设置眼睛睁开闭合对于密码显示与隐藏

<template><div class"login-container"><el-inputv-model"pwd":type"type"class"pwd-input"placeholder"请输入密码"><islot"suffix"class"icon-style":class"elIcon"…

Linux基础篇:文件系统介绍——根目录下文件夹含义与作用介绍

Linux文件系统介绍——文件夹含义与作用 Linux文件系统是一个组织和管理文件的层次结构。它包括了目录、子目录和文件&#xff0c;这些都是按照一定的规则和标准进行组织的。以下是Linux文件系统的一些关键组成部分&#xff1a; 1./bin&#xff1a; 该目录包含了系统启动和运…

第四百四十三回

文章目录 1. 概念介绍2. 思路与方法2.1 整体思路2.2 使用方法 3. 示例代码4. 内容总结 我们在上一章回中介绍了"自定义Action菜单"相关的内容&#xff0c;本章回中将介绍如何获取屏幕相关参数.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 我们在本…

【JavaScript 漫游】【052】Proxy

文章简介 本篇文章为【JavaScript 漫游】专栏的第 052 篇文章&#xff0c;记录了 ES6 规范中 Proxy 的知识点。 概述 Proxy 用于修改某些操作的默认行为&#xff0c;等同于在语言层面做出修改&#xff0c;所以属于一种“元编程”&#xff08;meta programming&#xff09;&a…

Navicat for MySQL 15免费注册方法

一、效果图如下&#xff1a; 注&#xff1a;此方法仅用于非商业用途&#xff0c;请勿传播&#xff0c;否则后果自负。 二、下载安装 下载安装包&#xff0c;分为32位和6位&#xff0c;下载文件名&#xff1a;Navicat for MySQL 15.zip&#xff08;https://download.csdn.net/…

Linux存储的基本管理

实验环境&#xff1a; 系统里添加两块硬盘 ##1.设备识别## 设备接入系统后都是以文件的形式存在 设备文件名称&#xff1a; SATA/SAS/USB /dev/sda,/dev/sdb ##s SATA, dDISK a第几块 IDE /dev/hd0,/dev/hd1 ##h hard VIRTIO-BLOCK /de…

计算机网络——数据链路层(流量传输与可靠传输机制)

计算机网络——数据链路层&#xff08;流量传输与可靠传输机制&#xff09; 流量传输与可靠传输机制流量控制可靠传输机制 停止-等待协议无差错情况接收并检测到差错状态确认丢失或迟到状态 停等协议的效率分析后退N帧协议&#xff08;Go-Back-N&#xff0c;简称GBN&#xff09…

PS从入门到精通视频各类教程整理全集,包含素材、作业等(9)复发

PS从入门到精通视频各类教程整理全集&#xff0c;包含素材、作业等 最新PS以及插件合集&#xff0c;可在我以往文章中找到 由于阿里云盘有分享次受限制和文件大小限制&#xff0c;今天先分享到这里&#xff0c;后续持续更新 第一课 ——第三课素材文件 https://www.alipan.c…

【数据结构与算法】力扣 203. 移除链表元素

题目描述 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 示例 1&#xff1a; 输入&#xff1a; head [1,2,6,3,4,5,6], val 6 输出&#xff1a; [1,2,3,4,5]示例 2&#xff1a; 输…

校招说明书

3400字的详细说明&#xff0c;介绍了程序员类岗位校招的整体时间节点和招聘流程。还对一些常见的问题进行讨论&#xff0c;例如内推、offer和三方、实习等。 第一章介绍基本的术语&#xff0c;第二章介绍整个校招的重要流程及时间点&#xff0c;然后第三章介绍每次招聘要经过的…

面试算法-140-接雨水

题目 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 示例 1&#xff1a; 输入&#xff1a;height [0,1,0,2,1,0,1,3,2,1,2,1] 输出&#xff1a;6 解释&#xff1a;上面是由数组 [0,1,0,2,1,0,1,3,2…

(一)小案例银行家应用程序-介绍

案例示例如下所示&#xff1a; 登录之后就会出现下面所示&#xff1a; 项目案例流程图如下 ● 首先我们建立四个账号对象&#xff0c;用于登录 const account1 {owner: ItShare,movements: [200, 450, -400, 3000, -650, -130, 70, 1300],interestRate: 1.2, // %pin: 11…

MySQL故障排查与优化

一、MySQL故障排查 1.1 故障现象与解决方法 1.1.1 故障1 1.1.2 故障2 1.1.3 故障3 1.1.4 故障4 1.1.5 故障5 1.1.6 故障6 1.1.7 故障7​ 1.1.8 故障8 1.1.9 MySQL 主从故障排查 二、MySQL优化 2.1 硬件方面 2.2 查询优化 一、MySQL故障排查 1.1 故障现象与解决方…

mkcert生成ssl证书+nginx部署局域网内的https服务访问问题

文章目录 mkcert生成ssl证书nginx部署局域网内的https服务访问问题1、下载mkcert查看自己的电脑是arm还是amd架构 2、安装mkcert3、测试mkcert是否安装成功4、查看CA证书存放位置5、打开windows的证书控制台6、生成自签证书,可供局域网内使用其他主机访问以下是nginx部署https服…

Prometheus+grafana环境搭建方法及流程两种方式(docker和源码包)(一)

1.选型对比 最近项目上有对项目服务及中间件的监控需求&#xff0c;要做实现方案调研&#xff0c;总结一下自己的成果&#xff0c;目前业界主流可选的方案有&#xff1a; 国外开源&#xff1a; Prometheus&#xff1a;Prometheus - Monitoring system & time series dat…

基于Java课程选课系统设计与实现(源码+部署文档)

博主介绍&#xff1a; ✌至今服务客户已经1000、专注于Java技术领域、项目定制、技术答疑、开发工具、毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精彩专栏 推荐订阅 &#x1f447;&#x1f3fb; 不然下次找不到 Java项目精品实…

Java设计模式:代理模式的静态和动态之分(八)

码到三十五 &#xff1a; 个人主页 心中有诗画&#xff0c;指尖舞代码&#xff0c;目光览世界&#xff0c;步履越千山&#xff0c;人间尽值得 ! 在软件设计中&#xff0c;代理模式是一种常用的设计模式&#xff0c;它为我们提供了一种方式来控制对原始对象的访问。在Java中&a…

HTML常用标签-最基础的标签

从本篇开始&#xff0c;我们围绕HTML原生标签开始&#xff0c;围绕整个前端三剑客进行&#xff0c;将进行一个大致的介绍和案例展示&#xff0c;没有啥技术含量&#xff0c;只是把学习前端的时候&#xff0c;案例全部展示出来&#xff0c;作为一个实时记录&#xff0c;或者说回…

PostgreSQL 文章下架 与 热更新和填充可以提升数据库性能

开头还是介绍一下群&#xff0c;如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, Oceanbase, Sql Server等有问题&#xff0c;有需求都可以加群群内有各大数据库行业大咖&#xff0c;CTO&#xff0c;可以解决你的问题。加群请联系 liuaustin3 &#xff0c;&#xff08;…