[蓝桥杯练习题]出差

一道DJ题,重要的是隔离时间,把隔离时间加在边权上即可
现实生活的题大多都是无向图建图,需要边的两端点各自上邻接表和相同权重

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

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N=1005;
const int M=10005;
struct edge{int to;ll w;edge(int a,int b){to=a;w=b;}
};
struct node{//dj有个node结构体,里面的setdis和外部定义的setdis很重要 int id;ll sdis;node(int num,ll len){id=num;sdis=len;}bool operator <(const node& cur)const{return sdis > cur.sdis;}
};
int geli[N];
vector<vector<edge>>adjtable(M);
priority_queue<node>wait;
ll sdis[N];
bool hasmin[M];
bool haspath[N];void dj(){while(!wait.empty()){node cur = wait.top();wait.pop();//取出离起点最近的点为当前点if(hasmin[cur.id])continue;//若起点有到当前点的最短路径了就跳过hasmin[cur.id]=true;haspath[cur.id]=true;for(edge adj:adjtable[cur.id]){//对某个结点的邻接表遍历 if(hasmin[adj.to])continue;//若起点有到该邻点的最短路径了就跳过 if(sdis[adj.to] > adj.w + cur.sdis){//若起点到邻点的最短距离 大于 当前点到邻点的距离 与 起点到当前点的最短距离 之和 sdis[adj.to] = adj.w + cur.sdis;//则更新 起点到邻点 的最短距离为  起点中转当前点再到邻点 的距离 wait.push(node(adj.to,sdis[adj.to]));//将邻点放入小根堆,与堆内其余邻点比较起点距,小者排前,下一轮优先弹出 
}	}	}	}int main(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);memset(sdis,0x7f,sizeof(sdis));int n,m;cin>>n>>m;for(int i=1;i<=n;++i)cin>>geli[i];int start=1,end=n;geli[end]=0;int a,b,c;for(int i=1;i<=m;++i){cin>>a>>b>>c;adjtable[a].push_back(edge(b,c+geli[b]));//无向图,两边都可以互相走,不可只声明一条有向边,而是不同点的互相有向边adjtable[b].push_back(edge(a,c+geli[a]));}// for(int i=1;i<n;++i){// 	for(edge& adj:adjtable[i])// 		adj.w+=geli[i];// }
//	for(int i=1;i<=n;++i)for(edge& adj:adjtable[i])cout<<i<<" "<<adj.to<<" "<<adj.w<<endl;wait.push(node(start,0));dj();if(hasmin[end]&&haspath[end])cout<<sdis[end];return 0;
} 
/*
4 4
5 7 3 4
1 2 4
1 3 5
2 4 3
3 4 5
*/

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

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

相关文章

Monaco Editor系列(二)Hello World 初体验

前言&#xff1a;上一篇文章我主要分享了从 Monaco Editor 入口文件以及官方提供的示例项目入手&#xff0c;对一部分源码进行剖析&#xff0c;以及分享了初始化阶段代码的大致执行步骤&#xff0c;这一篇了来讲一下我们要用 Monaco Editor 的时候该怎么用。其中会涉及到一些 A…

LeetCode 热题 100 | 动态规划(一)

目录 1 70. 爬楼梯 1.1 基本思路 1.2 官方题解 2 118. 杨辉三角 3 198. 打家劫舍 菜鸟做题&#xff0c;语言是 C 1 70. 爬楼梯 核心思想&#xff1a;把总问题拆解为若干子问题。 总问题&#xff1a;上到 5 楼的方式有多少种子问题&#xff1a;上到 4 楼的方式有多…

炫我科技:云渲染领域的佼佼者

随着数字化时代的来临&#xff0c;云渲染技术正逐渐成为影视、游戏、动画等创意产业的重要支柱。在这一领域中&#xff0c;炫我科技凭借其卓越的技术实力、优质的服务以及不断创新的精神&#xff0c;已然成为了云渲染行业的佼佼者。 炫我科技自成立之初&#xff0c;便以打造高…

SV学习笔记(二)

接口 什么是接口&#xff1f; 接口 主要用作验证 &#xff0c;国外有些团队会使用sv进行设计&#xff0c;那么接口就会用作设计。验证环境中&#xff0c;接口可以 使连接变得简洁而不易出错 。interface和module的使用性质很像&#xff0c; 可以定义端口&#xff0c;也可以定…

基于单片机的炉温控制系统设计

**单片机设计介绍&#xff0c;基于单片机的炉温控制系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机的炉温控制系统设计是一个融合了单片机技术、温度传感技术、控制算法以及硬件电路设计等多个领域的综合性项…

在ChatGPT中,能用DALL·E 3编辑图片啦!

4月3日&#xff0c;OpenAI开始向部分用户&#xff0c;提供在ChatGPT中的DALLE 3图片编辑功能。 DALLE 3是OpenAI在2023年9月20日发布的一款文生图模型&#xff0c;其生成的图片效果可以与Midjourney、leonardo、ideogram等顶级产品媲美&#xff0c;随后被融合到ChatGPT中增强其…

【BlossomConfig】SpringCloud项目是如何对bootstrap配置文件进行加载的?

文章目录 bootstrap配置文件的读取什么是配置中心&#xff1f;以及如何实现一个配置中心&#xff1f;SpringBoot如何实现配置的管控&#xff1f;SpringCloud项目是如何对bootstrap配置文件进行加载的&#xff1f;Nacos是如何实现配置文件的读取加载的&#xff1f;开发配置中心前…

一次普通的漏洞挖掘思路分享

No.0 前言 一名web安全小白&#xff0c;自己仅学了一点思路&#xff0c;直接实战&#xff0c;运气不错&#xff0c;碰到了管理员弱口令&#xff0c;进入后台后&#xff0c;继续测试自己学会的思路挖掘深一点的漏洞&#xff0c;这里与各位分享一下&#xff0c;如果有更多的思路…

MMU关闭时Cache的缓存策略是怎样的

快速链接: 【精选】ARMv8/ARMv9架构入门到精通-[目录] &#x1f448;&#x1f448;&#x1f448; 在学习MMU章节时&#xff0c;我们发现在页表的entry中&#xff0c;BIT[4:2]指向了MAIR寄存器&#xff0c;该寄存器描述了内存属性&#xff0c;其实就是cache的缓存策略属性&#…

洛谷-P1706 全排列问题(DFS)

目录 题目链接&#xff1a; 思路&#xff1a; 代码&#xff1a; 题目链接&#xff1a; P1706 全排列问题 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 思路&#xff1a; 如果n比较小&#xff0c;可以写n个for循环输出全排列。但是这种简单方法只能用于较小的n&#xff0…

Vue依赖注入,详细解析

Prop 逐级透传问题​ 通常情况下&#xff0c;当我们需要从父组件向子组件传递数据时&#xff0c;会使用 props。想象一下这样的结构&#xff1a;有一些多层级嵌套的组件&#xff0c;形成了一颗巨大的组件树&#xff0c;而某个深层的子组件需要一个较远的祖先组件中的部分数据。…

C++心决之内联函数+auto关键字+指针空值

目录 7.内联函数 7.1 概念 7.2 特性 8. auto关键字(C11) 8.1 类型别名思考 8.2 auto简介 8.3 auto的使用细则 8.4 auto不能推导的场景 9. 基于范围的for循环(C11) 9.1 范围for的语法 9.2 范围for的使用条件 10. 指针空值nullptr(C11) 10.1 C98中的指针空值 7.内联…