P1629 邮递员送信

题目描述

有一个邮递员要送东西,邮局在节点 1。他总共要送 n−1 样东西,其目的地分别是节点 2 到节点 n。由于这个城市的交通比较繁忙,因此所有的道路都是单行的,共有 m 条道路。这个邮递员每次只能带一样东西,并且运送每件物品过后必须返回邮局。求送完这 n−1 样东西并且最终回到邮局最少需要的时间。

输入格式

第一行包括两个整数,n 和 m,表示城市的节点数量和道路数量。

第二行到第 (m+1) 行,每行三个整数,u,v,w 表示从 u 到 v 有一条通过时间为 w 的道路。

输出格式

输出仅一行,包含一个整数,为最少需要的时间。

输入输出样例

输入
5 10
2 3 5
1 5 5
3 5 6
1 2 8
1 3 8
5 3 4
4 1 8
4 5 3
3 5 6
5 4 2
输出
83

这一看就是用单源最短路径求解答案,首先去第2到n个节点就不用说了,就是1到每个点的最短路径,这个在单元最短路里面讲过,接着就要看走回来这个问题

走回来怎么弄,以2到n每个点为根据点求出最短路径?这样肯定不行,TLE等着你

那怎么弄,其实仔细想一想,就不难想到,我们可以把有向图反过来存,还是以1为基础求单元最短路,dis里面存的就是2到n距离1的最短路了

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e3+5;
int n,m;
struct node{int to,dis;friend bool operator <(node a,node b){return a.dis>b.dis;}
};
vector<node> a[N];
vector<node> b[N];
int dis[N];
int dis2[N];
int vis[N];
int vis2[N];
int s;
priority_queue<node>q1;
priority_queue<node>q2;
void dij_start(){for(int i=1;i<=n;i++)dis[i]=INT_MAX;dis[s]=0;q1.push(node{s,0});while(!q1.empty()){node t=q1.top();q1.pop();int x=t.to;if(vis[x]==1)continue;vis[x]=1;for(int i=0;i<a[x].size();i++){int y=a[x][i].to;int z=a[x][i].dis;dis[y]=min(dis[y],dis[x]+z);if(vis[y]==0)q1.push(node{y,dis[y]});}}
}
void dij_over(){for(int i=1;i<=n;i++)dis2[i]=INT_MAX;dis2[s]=0;q2.push(node{s,0});while(!q2.empty()){node t=q2.top();q2.pop();int x=t.to;if(vis2[x]==1)continue;vis2[x]=1;for(int i=0;i<b[x].size();i++){int y=b[x][i].to;int z=b[x][i].dis;dis2[y]=min(dis2[y],dis2[x]+z);if(vis2[y]==0)q2.push(node{y,dis2[y]});}}
}
signed main(){scanf("%lld%lld",&n,&m);int u,v,w;for(int i=1;i<=m;i++){scanf("%lld%lld%lld",&u,&v,&w);a[u].push_back(node{v,w});b[v].push_back(node{u,w});}s=1;dij_start();dij_over();int sum=0;for(int i=2;i<=n;i++)sum+=dis[i]+dis2[i];printf("%lld",sum);
}

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

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

相关文章

【Vue3源码学习】— CH2.6 effect.ts:详解

effect.ts&#xff1a;详解 1. 理解activeEffect1.1 定义1.2 通过一个例子来说明这个过程a. 副作用函数的初始化b. 执行副作用函数前c. 访问state.countd. get拦截器中的track调用e. 修改state.count时的set拦截器f. trigger函数中的依赖重新执行 1.3 实战应用1.4 activeEffect…

LLM推理入门指南②:深入解析KV缓存

在本系列文章《LLM推理入门指南①&#xff1a;文本生成的初始化与解码阶段》中&#xff0c;作者对Transformer解码器的文本生成算法进行了高层次概述&#xff0c;着重介绍了两个阶段&#xff1a;单步初始化阶段&#xff0c;即提示的处理阶段&#xff0c;和逐个生成补全词元的多…

FreeRTOS作业day1

使用定时器2让黄灯闪烁 核心代码 man.c HAL_TIM_Base_Start_IT(&htim1);//以中断的方式打开定时器1&#xff0c;定时器开始工作计数&#xff0c;当时间到达500ms后&#xff0c;执行中断回调函数 HAL_TIM_Base_Start_IT(&htim2);//以中断的方式打开定时器2&#xff0…

pytorch中torch.stack()用法虽简单,但不好理解

函数功能 沿一个新维度对输入一系列张量进行连接&#xff0c;序列中所有张量应为相同形状&#xff0c;stack 函数返回的结果会新增一个维度。也即是把多个2维的张量凑成一个3维的张量&#xff1b;多个3维的凑成一个4维的张量…以此类推&#xff0c;也就是在增加新的维度上面进…

浪潮信息AIStation与潞晨科技Colossal-AI 完成兼容性认证!

为进一步提升大模型开发效率&#xff0c;近年来&#xff0c;浪潮信息持续加强行业合作&#xff0c;携手业内头部&#xff0c;全面进攻大模型领域。日前&#xff0c;浪潮信息AIStation智能业务创新生产平台与潞晨科技Colossal-AI大模型开发工具完成兼容性互认证。后续&#xff0…

如何使用 RabbitMQ 进行消息的发送和接收

1、创建连接工厂&#xff1a; ConnectionFactory factory new ConnectionFactory(); factory.setHost("localhost"); // 设置 RabbitMQ 服务器的主机地址 Connection connection factory.newConnection(); // 创建连接 Channel channel connection.createChannel…

性能测试VS负载测试VS压力测试

性能测试 性能测试的目的不是去找bugs,而是排除系统的瓶颈,以及为以后的回归测试建立一个基准。而性能测试的操作,实际上就是一个非常小心受控的测量分析过程。在理想的情况下,被测软件在这个时候已经是足够稳定了,所以这个过程得以顺利的进行。 一组清晰已定义好的…

FFmpeg将绿幕视频处理成透明视频播放

怎么在网页端插入透明视频呢&#xff0c;之前在做Web3D项目时&#xff0c;使用threejs可以使绿幕视频透明显示在三维场景中&#xff0c;但是在网页端怎么让绿幕视频透明显示呢&#xff1f; 如图上图&#xff0c;视频背景遮挡住后面网页内容 想要如下图效果 之前有使用过ffmpeg…

机器人码垛机:智能仓储系统的重要组成部分

随着科技的飞速进步&#xff0c;机器人技术已经渗透到了许多行业领域&#xff0c;其中&#xff0c;仓储业尤为显著。机器人码垛机作为智能仓储系统的重要组成部分&#xff0c;不仅提高了码垛效率&#xff0c;还降低了人工成本和安全风险。然而&#xff0c;在其广泛应用的同时&a…

HTML5 和 CSS3 提高

一、HTML5 的新特性 HTML5 的新增特性主要是针对于以前的不足&#xff0c;增加了一些新的标签、新的表单和新的表单属性等。这些新特性都有兼容性问题&#xff0c;基本是 IE9 以上版本的浏览器才支持&#xff0c;如果不考虑兼容性问题&#xff0c;可以大量使用这些新特性。 声明…

NineAi3.5 –支持GPT绘图,语音播报,联网访问,上下文关联,语音模式

NineAi3.5 –支持GPT绘图&#xff0c;语音播报&#xff0c;联网访问&#xff0c;上下文关联&#xff0c;语音模式 基于ChatGPT开发的一个人工智能技术驱动的自然语言处理工具&#xff0c;它能够通过学习和理解人类的语言来进行对话&#xff0c; 还能根据聊天的上下文进行互动&…

Vue3之setup方法

Vue 3 的 setup 方法是 Vue Composition API 的一部分&#xff0c;用于组织和复用 Vue 组件的逻辑代码。Vue Composition API 允许您以更具响应性和函数式的方式来组织和复用 Vue 组件中的代码&#xff0c;特别是在处理复杂逻辑或跨组件共享逻辑时非常有用。 以下是关于 setup…

Java NIO详解

一、概念 NIO, 即new io&#xff0c;也叫非阻塞io 二、NIO三个核心组件&#xff1a; Buffer数据缓冲区Channel通道Selector选择器 1、Buffer缓冲区 缓冲区本质上是一个可以存放数据的内存块&#xff08;类似数组&#xff09;&#xff0c;可以在这里进行数据写入和读取。此…

第十四届省赛大学B组(C/C++) 冶炼金属

题目描述 小蓝有一个神奇的炉子用于将普通金属 O 冶炼成为一种特殊金属 X。这个炉子有一个称作转换率的属性 V&#xff0c;V 是一个正整数&#xff0c;这意味着消耗 V 个普通金属 O 恰好可以冶炼出一个特殊金属 X&#xff0c;当普通金属 O 的数目不足 V 时&#xff0c;无法继续…

【Java】LinkedList模拟实现

目录 整体框架IMyLinkedList接口IndexNotLegalException异常类MyLinkedList类成员变量(节点信息)addFirst(头插)addLast(尾插)在指定位置插入数据判断是否存在移除第一个相等的节点移除所有相等的节点链表的长度打印链表释放回收链表 整体框架 IMyLinkedList接口 这个接口用来…

Leetcode704_二分查找

1.leetcode原题链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 2.题目描述 给定一个 n 个元素有序的&#xff08;升序&#xff09;整型数组 nums 和一个目标值 target &#xff0c;写一个函数搜索 nums 中的 target&#xff0c;如果目标值存在返回下标&#xff…

京东云服务器价格_云主机价格查询系统_2024年京东云优惠活动

2024年京东云服务器优惠价格表&#xff0c;轻量云主机优惠价格5.8元1个月、轻量云主机2C2G3M价格50元一年、196元三年&#xff0c;2C4G5M轻量云主机165元一年&#xff0c;4核8G5M云主机880元一年&#xff0c;游戏联机服务器4C16G配置26元1个月、4C32G价格65元1个月、8核32G费用…

OpenHarmony如何模拟搭建本地http静态服务

简介 本文是在基于OpenHarmony 4.0的基础上&#xff0c;介绍了一种编写一个前端http静态服务的思路. 方案设计 在OpenHarmony上&#xff0c;如果想要访问本地网页。有两种方案 u 方案一&#xff1a;使用file协议&#xff0c;将html放至entry/src/main/resource/rawfile下&#…

构建ELK+Filebeat+kafka+zookeeper大数据日志分析平台

主机IP 角色 所属服务层 部署服务 192.168.11.11 日志生产 采集层 filebeat 192.168.11.12 日志缓存 数据处理层、缓存层 Zookeeperkafkalogstash 192.168.11.13 192.168.11.14 日志展示 持久、检索、展示层 Logstashelasticsearchkibana 数据流向 filebeat--…

#设计模式#3.1 抽象工厂

抽象工厂模式是一种创建型设计模式&#xff0c;它提供了一种方式&#xff0c;可以将一组具有同一主题的单独的工厂封装起来。在抽象工厂模式中&#xff0c;抽象工厂定义了产品的创建接口&#xff0c;但是由子类决定实例化哪一个产品类。 在Python中&#xff0c;你可以使用abc模…