H.機房【藍橋杯】/數組鏈式前向星建圖+堆優化版dijkstra

機房

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

數組鏈式前向星建圖+堆優化版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.pswp.cn/bicheng/16401.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/16401.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/16401.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

STL---unordered set和unordered multiset【無序集合】

1.1 定義及初始化&#x1f357; 下面列出常用的初始化方式 #include <unordered_set> #include <iostream> using namespace std; //輸出s中的所有元素 template<typename T> void Show(const T& s) {for (auto& x : s) …

Python的pip配置、程序運行、生成exe文件

一、安裝Python 通過官網下載對應的版本&#xff0c;安裝即可。 下載地址&#xff1a;Download Python | Python.org Python標準庫查看&#xff08;Python自帶庫&#xff09; Python 標準庫文檔 安裝Python的時候&#xff0c;如果選第二個自定義安裝要記得勾選安裝pip 二、…

2024/05/25學習記錄

1、面經復習&#xff1a;前端廣度 2、代碼隨想錄刷題&#xff1a;動態規劃 3、rosebush 完成input組件基礎

閑置商標轉讓出現這些狀態時注意!

近日以前做轉讓的一個朋友的商標轉讓證明下來&#xff0c;正好是2個半月&#xff0c;普推知產老楊發現這個時間也太快&#xff0c;以前差不多四個月左右&#xff0c;有些朋友需要購買閑置商標&#xff0c;3個月內所有權就變成自己的。 在購買閑置商標時要注意有一些細節&#x…

Python限制輸入的數范圍

在Python中&#xff0c;我們可以使用多種方法來限制用戶輸入的數值范圍。 1.使用while循環和try-except語句的方法 以下是一個使用while循環和try-except語句的示例&#xff0c;該示例將要求用戶輸入一個在指定范圍內的整數。 假設我們要限制用戶輸入的數在1到100之間&#…

MySQL的索引, 到底怎么創建?

目錄 前言 MySQL的數據結構 索引是一把雙刃劍 索引創建原則 如何給一個列挑選索引? 索引列的基數, 要盡量小 索引列的類型盡量小 索引長字符串的前綴 不要對索引列進行計算操作或者函數計算. 不要老想著查詢, 想想插入該怎么辦? 避免索引冗余和重復 前言 今天在…

TOTP 算法實現:雙因素認證的基石(C/C++代碼實現)

雙因素認證&#xff08;Two-Factor Authentication, 2FA&#xff09;扮演著至關重要的角色。它像是一道額外的防線&#xff0c;確保即便密碼被竊取&#xff0c;不法分子也難以輕易突破。在眾多雙因素認證技術中&#xff0c;基于時間的一次性密碼&#xff08;Time-Based One-Tim…

ubuntu/部分docker容器無法訪問https站點

ubuntu/部分docker容器無法訪問https站點 解決方案 解決方案 默認的系統內可能沒有安裝根證書&#xff0c;需要安裝一下 apt install ca-certificates如果官方源比較慢&#xff0c;可以換為國內源&#xff0c;但是不要使用https

【fastapi+mongodb】使用motor操作mongodb

上一篇文章&#xff0c;我們在電腦上安裝了mongodb數據庫。這篇文章&#xff0c;我們在fastapi后端使用motor操作mongodb 如果你還沒看過上一篇文章&#xff0c;鏈接在這里&#xff1a;【MongoDB】安裝與使用 安裝 motor motor 是一個用于操作 mongodb 數據庫的 python 庫&a…

計算機網絡 1

兩臺主機想通信&#xff0c;其實本質就是兩個文件的資源交換&#xff0c;但是長距離的通信&#xff0c;面臨的是很多的問題。這個時候需要通過一些方式來保證可靠性 什么是協議 這樣一個例子&#xff0c;我是住在農村&#xff0c;我讀高中了我需要去縣里面讀書。這個時候呢&…

VL15 優先編碼器Ⅰ

兩種思路 module encoder_83(input [7:0] I ,input EI ,output wire [2:0] Y ,output wire GS ,output wire EO );reg [4:0] temp1 ; always (*) begincasex({EI,I}) 9b0_xxxx_xxxx:begin temp1 5b000_0_0;…

冒泡排序和遞歸排序

目錄 一.冒泡排序 1.1概念&#xff1a; 1.2原理&#xff1a; 1.3簡單示例講解&#xff1a; 二.遞歸排序 1.1概念&#xff1a; 1.2原理&#xff1a; 1.3簡單示例講解&#xff1a; 一.冒泡排序 1.1概念&#xff1a; 冒泡排序是一種最基礎的交換排序。 通過反復交換相鄰…

Jupyter Lab 軟件安裝與使用

軟件簡介 Jupyter Lab 軟件是一個基于web 的交互式開發環境&#xff0c;集成了代碼編輯器、終端、文件管理器等功能&#xff0c;使得開發者可以在一個界面中完成各種任務。JupyterLab是Jupyter Notebook的全面升級&#xff0c;是一個集文本編輯器、終端以及各種個性化組件于一…

Java進階學習筆記29——Math、System、Runtime

Math&#xff1a; 代表的是數學&#xff0c;是一個工具類&#xff0c;里面提供的都是對數據進行操作的一些靜態方法。 示例代碼&#xff1a; package cn.ensourced1_math;public class MathTest {public static void main(String[] args) {// 目標&#xff1a;了解Math類提供…

那智不二越機器人維修案例分享

那智不二越工業機器人在工業范圍內廣泛應用于各種生產領域。其示教器作為人機交互的重要設備&#xff0c;常常需要定期維護和Nachi不二越機械手示教盒修理。 【Nachi不二越機器人示教器維修步驟】 1. 關閉電源 在進行任何那智不二越機器人維修操作之前&#xff0c;務必確保機器…

<商務世界>《75 微課堂<茶葉(1)-質量分級>》

1 中國茶葉分級 中國的10級標準是按照茶葉的外觀、香氣、滋味、湯色、葉底五個方面進行評分&#xff0c;分別用10分制進行評分&#xff0c;總分為50分&#xff0c;得分越高&#xff0c;茶葉的品質就越高。具體的分數和等級如下表所示&#xff1a; 2 每級的特點 茶葉的質量等級…

OceanBase SQL 診斷和調優實踐——【DBA從入門到實踐】第七期

數據庫作為絕大多數應用系統儲存數據的核心系統&#xff0c;在用戶系統需要訪問數據時&#xff0c;有著至關重要的作用。在這些交互中&#xff0c;SQL 語言是應用與數據庫系統之間“溝通”的橋梁&#xff0c;它負責將應用的指令傳達給數據庫。因此&#xff0c;SQL 的性能好壞直…

弱類型解析

php中 轉化為相同類型后比較 先判斷數據類型后比較數值 var_dump("asdf"0);#bool(true) var_dump("asdf"1);#bool(false) var_dump("0asdf"0);#bool(true) var_dump("1asdf"1);#bool(true)1、md5撞庫 例&#xff1a; <?php incl…

【智能算法應用】模擬退火算法求解多車型車輛路徑問題HFVRP

目錄 1.算法原理2.多車型車輛路徑HFVRP數學模型3.結果展示4.參考文獻5.代碼獲取 1.算法原理 模擬退火算法&#xff08;Simulated Annealing, SA&#xff09;是一種通用概率算法&#xff0c;用于在給定一個大的搜索空間內尋找問題的近似最優解。這種算法受到物理中退火過程的啟…