H.机房【蓝桥杯】/数组链式前向星建图+堆优化版dijkstra

news2024/10/6 6:05:34

机房

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

数组链式前向星建图+堆优化版dijkstra

#include<iostream>
#include<queue>
#include<cstring>
#include<vector>
using namespace std;
typedef pair<int,int> pii;
//无向图开两倍
int e[200005],ne[200005],v[200005],h[200005],du[100005],idx;
int dist[100005],st[100005];
vector<pair<int,int>> ve;
//利用数组链式前向星建图
void add(int x,int y,int d)
{
    e[++idx]=y;
    ne[idx]=h[x];
    //v数组即把该点的度数转为从该点出的边的权值
    v[idx]=d;
    h[x]=idx;
}
void dijkstra(int x,int y)
{
    memset(st,0,sizeof(st));
    memset(dist,0x3f,sizeof(dist));
    dist[x]=0;
    //用最小堆优化
    priority_queue<pii,vector<pii>,greater<pii>> q;
    q.push({0,x});
    while(!q.empty())
    {
        int u=q.top().first,vv=q.top().second;
        q.pop();
        //即已经找到x到y的最小距离
        if(vv==y) return;
        //即该点已经被中转过了
        if(st[vv]) continue;
        st[vv]=1;
        for(int i=h[vv];i!=0;i=ne[i])
        {
            int node=e[i];
            if(dist[node]>dist[vv]+v[i])
            {
                dist[node]=dist[vv]+v[i];
                q.push({dist[node],node});
            }
        }
    }
}
int main()
{
    int n,m;
    cin>>n>>m;
    for(int i=0;i<n-1;i++)
    {
        int x,y;
        cin>>x>>y;
        ve.push_back({x,y});
        du[x]++;
        du[y]++;
    }
    for(int i=0;i<n-1;i++)
    {
        int x=ve[i].first;
        int y=ve[i].second;
        add(x,y,du[x]);
        add(y,x,du[y]);
    }
    for(int i=0;i<m;i++)
    {
        int u,v;
        cin>>u>>v;
        dijkstra(u,v);
        //最后要加上终点的权值
        cout<<dist[v]+du[v]<<endl;
    }
    return 0;
}

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

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

相关文章

前端 JS 经典:Web 性能指标

什么是性能指标&#xff1a;Web Performance Metrics 翻译成 Web 性能指标&#xff0c;一般和时间有关系&#xff0c;在短时间内做更多有意义的事情。 一个站点表现得好与不好&#xff0c;标准在于用户体验&#xff0c;而用户体验好不好&#xff0c;有一套 RAIL 模型来衡量。这…

2024年上半年系统架构设计师真题-复原程度90%

前言 此次考试监考特别严格&#xff0c;草稿纸不允许带出考场&#xff0c;并且准考证上不允许任何写画&#xff0c;甚至连笔都允许带一支&#xff0c;所以下面的相关题目都是参考一些群友的提供&#xff0c;加上自己的记忆回顾&#xff0c;得到的结果。 其中综合知识部分的题…

修复谷歌 AdSense 的 Ads.Txt 无效的有收益损失风险提示

明月的 AdSense 账号后台一直都有“有收益损失风险 - 您需要纠正 ads.txt 文件存在的一些问题&#xff0c;以免严重影响您的收入。”的提示长达一年多了&#xff0c;这次重新开始投放谷歌 AdSense 广告后感觉需要解决掉这个问题了&#xff0c;因为已经全站使用了 CloudFlare&am…

《Ai学习笔记》-模型集成部署

后续大多数模型提升速度和精度&#xff1a; 提升速度&#xff1a; -知识蒸馏&#xff0c;以distillBert和tinyBert为代表 -神经网络优化技巧。prune来剪裁多余的网络节点&#xff0c;混合精度&#xff08;fp32和fp26混合来降低计算精度从从而实现速度的提升&#xff09; 提…

驾驭数字前沿--欧盟商会网络安全大会活动

本次安策参加由欧盟商会组织举办的--超越 2024 年网络安全大会&#xff1a;驾驭数字前沿大会(上海)&#xff0c;安策在大会上做了《2024数据威胁报告主题报告》并希望携手各行业伙伴&#xff0c;共同驾驭数字前沿的波涛&#xff0c;共创安全、合规、高效的数字未来。 【安策活动…

操作系统入门系列-MIT6.828(操作系统工程)学习笔记(二)----课程实验环境搭建(wsl2+ubuntu+quem+xv6)

MIT6.S081&#xff08;操作系统&#xff09;学习笔记 操作系统入门系列-MIT6.828&#xff08;操作系统&#xff09;学习笔记&#xff08;一&#xff09;---- 操作系统介绍与接口示例 操作系统入门系列-MIT6.828&#xff08;操作系统工程&#xff09;学习笔记&#xff08;二&am…

大模型的实践应用24-LLaMA-Factory微调通义千问qwen1.5-1.8B模型的实例

大家好,我是微学AI,今天给大家介绍一下大模型的实践应用24-LLaMA-Factory微调通义千问qwen1.5-1.8B模型的实例, LLaMA-Factory是一个专门用于大语言模型微调的框架,它支持多种微调方法,如LoRA、QLoRA等,并提供了丰富的数据集和预训练模型,便于用户进行模型微调。通义千问…

谷歌Google广告投放优势和注意事项!

谷歌Google作为全球最大的搜索引擎&#xff0c;谷歌不仅拥有庞大的用户基础&#xff0c;还提供了高度精准的广告投放平台&#xff0c;让广告主能够高效触达目标受众&#xff0c;实现品牌曝光、流量增长乃至销售转化的多重目标&#xff0c;云衔科技以专业服务助力您谷歌Google广…

C++笔记:红黑树与哈希表

1.容器rb_tree 按正常规则it遍历&#xff0c;便能得到排序状态不能使用rb_tree的iterators改变元素值两种插入操作&#xff1a;insert_unique()和insert_equal() template <class Key, class Value, class KeyOfValue, class Compare, class Allocalloc> class rb_tree…

基于Zookeeper的分布式锁

分布式锁的介绍 在Java的多线程部分&#xff0c;我们知道如果在单个jvm进程中&#xff0c;多个线程之间同时访问一个资源&#xff0c;此时会有多线程的安全问题。为了解决这个线程安全的问题&#xff0c;我们可以使⽤“锁”来实现。但是&#xff0c;多个jvm进程之间如果同时访问…

计算机毕业设计 | SpringBoot社区物业管理系统 小区管理(附源码)

1&#xff0c; 概述 1.1 课题背景 近几年来&#xff0c;随着物业相关的各种信息越来越多&#xff0c;比如报修维修、缴费、车位、访客等信息&#xff0c;对物业管理方面的需求越来越高&#xff0c;我们在工作中越来越多方面需要利用网页端管理系统来进行管理&#xff0c;我们…

【源码】java + uniapp交易所源代码/带搭建教程java交易所/完整源代码

java uniapp交易所源代码/带搭建教程java交易所/完整源代码 带简洁教程&#xff0c;未测 java uniapp交易所源代码/带搭建教程java交易所/完整源代码 - 吾爱资源网

软件需求开发管理规程-Word原件(配套软件全资料文档)

1. 目的 2. 适用范围 3. 参考文件 4. 术语和缩写 5. 需求获取的方式 5.1. 与用户交谈向用户提问题 5.1.1. 访谈重点注意事项 5.1.2. 访谈指南 5.2. 参观用户的工作流程 5.3. 向用户群体发调查问卷 5.4. 已有软件系统调研 5.5. 资料收集 5.6. 原型系统调研 5.6.1. …

Android11热点启动和关闭

Android官方关于Wi-Fi Hotspot (Soft AP) 的文章&#xff1a;https://source.android.com/docs/core/connect/wifi-softap?hlzh-cn 在 Android 11 的WifiManager类中有一套系统 API 可以控制热点的开和关&#xff0c;代码如下&#xff1a; 开启热点&#xff1a; // SoftApC…

Java进阶学习笔记27——StringBuilder、StringBuffer

StringBuilder&#xff1a; StringBuilder代表可变字符串对象&#xff0c;相当于一个容器&#xff0c;它里面装的字符串是可以改变的&#xff0c;就是用来操作字符串的。 好处&#xff1a; StringBuilder比String更适合做字符串的修改操作&#xff0c;效率会更高&#xff0c;…

基于Ruoyi-Cloud-Plus重构黑马项目-学成在线

文章目录 一、系统介绍二、系统架构图三、参考教程四、演示图例机构端运营端用户端开发端 一、系统介绍 毕设&#xff1a;基于主流微服务技术栈的在线教育系统的设计与实现 前端仓库&#xff1a;https://github.com/Xiamu-ssr/Dragon-Edu-Vue3 后端仓库&#xff1a;https://g…

Nodejs(文件操作,构建服务器,express,npm)

文章目录 文件操作1.读取文件1&#xff09;步骤2&#xff09;范例 2.写文件1&#xff09;步骤2&#xff09;范例 3.删除文件4.重命名文件夹5删除文件夹 Url1.url.parse()2.url.fomat() Query1.query.parse()2.query.stringfy()3.编码和解码 第三方模块1.nodemailer2.body-parse…

学 C/C++ 具体能干什么?

学习 C 和 C 后&#xff0c;你可以从事许多不同的工作和项目&#xff0c;这两种语言以其高性能和低级控制而闻名&#xff0c;特别适合以下几个领域&#xff1a; 1. 系统编程 C 和 C 是系统编程的首选语言&#xff0c;适用于操作系统、驱动程序和嵌入式系统开发。 操作系统开发…

VLC播放器(全称VideoLAN Client)

一、简介 VLC播放器&#xff08;全称VideoLAN Client&#xff09;是一款开源的多媒体播放器&#xff0c;由VideoLAN项目团队开发。它支持多种音视频格式&#xff0c;并能够在多种操作系统上运行&#xff0c;如Windows、Mac OS X、Linux、Android和iOS等。VLC播放器具备播放文件…

SSH 远程登录系统和远程拷贝

文章目录 目录 文章目录 前言 一.SSH的基本用法 SSH基本用法&#xff1a; SSH无密码登录 二.SSH安全设置 三.SSH限制用户 前言 很多时候服务器并没有服务器&#xff0c;我们也不能每次都通过控制台去管理服务器&#xff0c;这时候就需要远程登录&#xff0c;相比于Telnet&a…