新年好——Dijkstra+Permutation

news2025/1/14 18:41:14

题目

代码 

#include <bits/stdc++.h>
using namespace std;
#define x first
#define y second
typedef pair<int, int> PII;
const int N = 5e4+10, M = 2e5+10;
const int inf = 0x3f3f3f3f; 
int n, m;
int a[6];
int h[N], e[M], ne[M], idx, w[M];
int dist[6][N];
int st[N];
unordered_map<int, int> mp;
void add(int a, int b, int c)  // 添加一条边a->b
{
    w[idx] = c, e[idx] = b, ne[idx] = h[a], h[a] = idx ++ ;
}
void dijkstra(int s, int d[])
{
    memset(st, 0, sizeof st);
    priority_queue<PII, vector<PII>, greater<PII>> q;
    q.push({0, s}); d[s] = 0; st[s] = true;

    while(q.size())
    {
        int u = q.top().y; q.pop();
        st[u] = false;
        
        for(int i = h[u]; ~i; i = ne[i])
        {
            int j = e[i];
            if(d[j] > d[u] + w[i])
            {
                d[j] = d[u] + w[i];
                if(!st[j]) q.push({d[j], j}), st[j] = true;
            }
        }
    }
}
void out()
{
    for(int i = 0; i <= 5; i++)
        cout << a[i] << ' ';
    cout << '\n';
}
int main()
{
    cin >> n >> m;
    a[0] = 1, mp[1] = 0;
    for(int i = 1; i <= 5; i++)
    {
        cin >> a[i];
        mp[a[i]] = i;
    }
        
    memset(h, -1, sizeof h);
    for(int i = 1; i <= m; i++)
    {
        int x, y, t;
        cin >> x >> y >> t;
        add(x, y, t);
        add(y, x, t);
    }
    
    memset(dist, 0x3f, sizeof dist);
    for(int i = 0; i <= 5; i++)
        dijkstra(a[i], dist[i]);
    
    sort(a+1, a+6);
    int ans = inf;
    do{
        int sum = 0;
        for(int i = 0; i+1 <= 5; i++)
        {
            int t = dist[mp[a[i]]][a[i+1]];
            if(t == inf)
            {
                sum = inf;
                break;
            }
            sum += t;
        }
        ans = min(ans, sum);
    }while(next_permutation(a+1, a+6));
    
    cout << ans;
}

注意

起点永远是1

要先sort一下,不然permutation可能没有枚举完

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

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

相关文章

用Python实现运筹学——Day 17: 0-1 整数规划

一、学习内容 1. 0-1 整数规划的定义 0-1 整数规划是一类特殊的整数规划问题&#xff0c;决策变量只能取 0 或 1。它常用于解决选择问题&#xff0c;如是否选择某个项目、是否执行某个任务等。决策变量 ​ 通常表示“选择”&#xff08;&#xff09;或“不选择”&#xff08;…

实用宝典:元器件外贸独立站电子元件数据库设置完全手册

对于投身于元器件外贸领域的企业来说&#xff0c;如何建立一个既能凸显自身特色又具备高度功能性与良好用户体验的独立站&#xff1f;而在这一过程中&#xff0c;#电子元件数据库#作为独立站的核心要素之一&#xff0c;它的构建质量和管理方式又将如何直接影响网站的整体竞争力…

Python| 如何使用 DALL·E 和 OpenAI API 生成图像(2)

引言 想象一下&#xff0c;只要描述你想要的画面&#xff0c;电脑就能帮你画出来。这在几年前还像是科幻小说里的场景&#xff0c;但随着神经网络和潜在扩散模型&#xff08;LDM&#xff09;技术的发展&#xff0c;现在已经成为可能。OpenAI 推出的 DALLE 工具&#xff0c;因其…

STM32L151 多通道ADC DMA循环扫描STM32CubeIDE STM32CubeMX参考设计

简介 项目开发过程中&#xff0c;采用STM32L151 芯片进行涉及&#xff0c;其中需要使用其片上ADC进行多路ADC数据采样。这里就记录一下实际这块的开发过程&#xff0c;其中涉及工程代码再项目中实际投产使用。STM32L151 多通道ADC DMA循环扫描STM32CubeIDE STM32CubeMX参考设计…

【文心智能体 | AI大师工坊】通过知识库优化智能体『万圣节之纸人还魂』:探索恐怖剧本杀的奇幻之旅

文章目录 1.1、智能体运行效果1.2、创作灵感来源1.3、如何制作智能体1.4、可能会遇到的几个问题1.5、快速调优指南 My_优质智能体『万圣节之纸人还魂&#x1f47b;』&#xff1a;https://aq58pt.smartapps.baidu.com/?_swebfr1&_swebScene3611000100000000 在当今人工智能…

Vue开发中由错误These relative modules were not found 引起的问题思考及解决

一、由Vue: These relative modules were not found 引起的问题 1、vue2.6.14 These relative modules were not found 在使用vue2.6.14开发的项目在本地windows 10上都一直成功&#xff0c;想放到jenkins上进行发布。之前其它的 vue 项目也都能发布正常&#xff0c;但此次一…

【stm32】DMA的介绍与使用

DMA的介绍与使用 1、DMA简介2、存储器映像3、DMA框图4、DMA基本结构5、DMA请求6、数据宽度与对齐7、数据转运DMA&#xff08;存储器到存储器的数据转运&#xff09;程序编写&#xff1a; 8、ADC连续扫描模式DMA循环转运DMA配置&#xff1a;程序编写&#xff1a; 1、DMA简介 DM…

Antsword-labs靶机渗透

Less-1 在当前界面开启终端 ![](https://img-blog.csdnimg.cn/img_convert/e5ab1b947b1186a43b58abaf10263cb1.png) 启动环境 plain docker-compose up -d 蚁剑连接 ![](https://img-blog.csdnimg.cn/img_convert/81a5c09987e18355335d07e4da52cb5f.png) 打开终端寻找flag …

ACL:访问控制列表

基本概念 1.访问控制: 在路由器的入或者出的接口上&#xff0c;匹配流量&#xff0c;之后产生动作&#xff0c;只有允许和拒绝。 2.定义感兴趣流量: 帮助其他策略抓流量的 匹配规则:至上而下 逐一匹配 上条匹配按照上条执行 不再查看下条 (思科体系中 末尾隐含拒绝所有 华为…

20个月投标战胜国际对手,中国百余台AGV进驻欧洲……

导语 大家好&#xff0c;我是社长&#xff0c;老K。专注分享智能制造和智能仓储物流等内容。 在全球智能制造竞争日益激烈的今天&#xff0c;中国制造再次传来振奋人心的好消息。 经过长达20个月的艰苦角逐&#xff0c;一家中国机器人企业&#xff08;新松机器人&#xff09;成…

microsoft edge浏览器卡死问题

win11经常遇到microsoft edge浏览器卡死的情况&#xff0c;有时候是一会没用浏览器就全部卡死&#xff0c;有时候是锁屏或者电脑休眠浏览器就不能用&#xff0c;找了很多的办法都没好使&#xff0c;用以下方法好使了&#xff1a; edge浏览器中打开 edge://settings/system 把 …

计算机的错误计算(一百二十三)

摘要 探讨算式 的计算精度问题。 例1. 已知 计算 不妨在Python下计算&#xff0c;则有&#xff1a; 若用Rust在线计算&#xff1a; fn main() {let x: f64 0.125e-6;let tan_x x.tan();let sin_x x.sin();let denominator x - (1.0 x * x).sqrt();let result (…

大学模拟电路设计期末速成总结

大学模拟电路设计期末速成总结 模拟电路设计是电子工程领域的基础&#xff0c;它涉及到连续信号的处理和放大。对于电子工程的学生来说&#xff0c;掌握模拟电路设计的基本原理和应用是至关重要的。以下是期末速成总结&#xff0c;帮助你快速回顾和掌握模拟电路设计的关键知识…

香橙派刷机和开发环境准备(ubuntu22.04版)_随记1

前言&#xff1a; 一、香橙派刷ubuntu系统和SSH登录 1、刷机前准备&#xff1a; ①TF卡&#xff08;8G&#xff09;、读卡器、OrangePi5Pro ②Win32DiskImager&#xff08;烧写系统工具&#xff09;、SDFormatter&#xff08;TF格式化工具&#xff09; ③系统镜像&#xff…

学习文档(4)

目录 Vue简介 MVVM思想 Vue指令 内容输出指令 条件渲染指令 列表渲染指令 数据绑定指令 Vue简介 Vue2.x官网&#xff1a;https://v2.cn.vuejs.org Vue3.x官网&#xff1a;https://cn.vuejs.org 官网&#xff08;2.x版本&#xff09;对vue的定义是&#xff1a;vue是一套…

kubelet PLEG实现

概述 kubelet的主要作用是确保pod状态和podspec保持一致&#xff0c;这里的pod状态包括pod中的container状态&#xff0c;个数等。 为了达到这个目的&#xff0c;kubelet需要从多个来源watch pod spec的变化&#xff0c;并周期从container runtime获取最新的container状态。比如…

I2C相关结构体讲解:i2c_adapter、i2c_algorithm、i2c_msg

往期内容 I2C子系统专栏&#xff1a; I2C&#xff08;IIC&#xff09;协议讲解SMBus 协议详解 总线和设备树专栏&#xff1a; 专栏地址导航篇 – 专栏未篇 1.框图 建议右击图片在新标签页打开预览 i2c_transfer函数就是读取i2c设备的信息或者输出信息给i2c设备的函数 比如发送…

信息安全工程师(49)网络物理隔离系统与类型

前言 网络物理隔离系统是指通过物理隔离技术&#xff0c;在不同的网络安全区域之间建立一个能够实现物理隔离、信息交换和可信控制的系统&#xff0c;以满足不同安全域的信息或数据交换需求。 一、网络物理隔离系统概述 网络物理隔离系统的核心在于通过物理方式将不同安全级别的…

SQL Injection | SQL 注入概述

关注这个漏洞的其他相关笔记&#xff1a;SQL 注入漏洞 - 学习手册-CSDN博客 0x01&#xff1a;SQL 注入漏洞介绍 SQL 注入就是指 Web 应用程序对用户输入数据的合法性没有判断&#xff0c;前端传入后端的参数是可控的&#xff0c;并且参数会带入到数据库中执行&#xff0c;导致…

【计算机网络篇】数据链路层 协议、介质访问控制

&#x1f9f8;安清h&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;【计算机网络】【Mybatis篇】 &#x1f6a6;作者简介&#xff1a;一个有趣爱睡觉的intp&#xff0c;期待和更多人分享自己所学知识的真诚大学生。 系列文章目录 【计算机网络篇】计算机网络概述 【…