最小生成樹---Kruskal算法

最小生成樹定義:

? ? ? ? 給定一張邊帶權的無向圖 G=(V,E),其中 V 表示圖中點的集合,E 表示圖中邊的集合。

? ? ? ? 由 V 中的全部 n 個頂點和 E 中 n?1 條邊構成的無向連通子圖被稱為 G 的一棵生成樹,其中邊的權值之和最小的生成樹被稱為無向圖 G 的最小生成樹。

最小生成樹應用場景:

? ? ? ? 例如在城市規劃中,有 n 座城市,需要修建高速公路來連通各個城市,如何設計可使得路程修建總距離最短。可以抽象為,當前有個 n 個點的無向圖,每個點之間都有一條連線,從中找出 n-1 條邊,使得所有的點都在一個集合中,且集合中所有邊的權值加起來最小。

? ? ? ? 也可廣泛的應用于通信,電路,航線等等類似的問題。

最小生成樹其他算法?最小生成樹---樸素Prim算法,堆優化版Prim算法-CSDN博客


?Kruskal算法

使用到并查集并查集(基本原理+示例)-CSDN博客?

算法思路:

S:已加入最小生成樹的點的集合

偽代碼:

1.將所有的邊按權重從小到大進行排序(點之間是雙向的,但只需要存儲一個方向的邊)

2.枚舉每一條邊 a -> b 權重c

? ? ? ? if a,b不聯通

? ? ? ? ? ? ? ? 將這條邊加入集合S (使用到并查集的方法)

?最小生成樹的題(都來源acwing):

1138. 城市公交網建設問題 - AcWing題庫?(數據范圍小,prim也可使用)

1147. 構造完全圖 - AcWing題庫

最小生成樹的?題庫 - AcWing

例題:??1139. 最優布線問題 - AcWing題庫

學校有?n?臺計算機,編號是?1~n,為了方便數據傳輸,現要將它們用數據線連接起來,同一條數據線中數據的傳輸可以是?雙向?的。

兩臺計算機被連接是指它們有數據線連接。

由于計算機所處的位置不同,因此不同的兩臺計算機的連接費用往往是不同的。

當然,如果將任意兩臺計算機都用數據線連接,費用將是相當龐大的。

為了節省費用,我們采用數據的間接傳輸手段,即一臺計算機可以間接的通過若干臺計算機(作為中轉)來實現與另一臺計算機的連接。

現在由你負責連接這些計算機,任務是使任意兩臺計算機都連通(不管是直接的或間接的)。

輸入格式

第一行為整數?n,表示計算機的數目。

此后的?n?行,每行?n?個整數,輸入一個對角線上全部是0的?對稱矩陣
其中第?x+1 行?y?列的整數表示直接連接第?x?臺計算機和第?y?臺計算機的費用。

輸出格式

一個整數,表示最小的連接費用。

數據范圍

2≤n≤100,
連接任意兩臺計算機的費用均是非負整數且不超過10000。

輸入樣例:

3
0 1 2
1 0 1
2 1 0

輸出樣例:

2
import java.io.*;
import java.util.*;class Main{static int N = 110;static int n,m,res;static int[] p = new int[N];static Queue<PII> q = new PriorityQueue<>();public static void main(String[] args) throws IOException{BufferedReader in = new BufferedReader(new InputStreamReader(System.in));n = Integer.parseInt(in.readLine());for(int i=1;i<=n;i++){p[i] = i; // 初始化p[],一個點一個集合String[] s = in.readLine().split(" ");for(int j=1;j<i;j++){q.add(new PII(i,j,Integer.parseInt(s[j-1]))); // 只讀取左下半的數據}}// kruskal算法while(!q.isEmpty()){ // 讀取所有的邊PII t = q.poll();int a = t.a, b = t.b, c = t.c;if(find(a)!=find(b)){ // 如果不在一個集合p[find(a)] = find(b); // 加到一個集合res += c; // 加上權重}}System.out.println(res);}// 找集合的根節點public static int find(int u){if(p[u]!=u) p[u] = find(p[u]);return p[u];}
}
// 存儲邊
class PII implements Comparable<PII>{int a;int b;int c;public PII(int a,int b,int c){this.a = a;this.b = b;this.c = c;}public int compareTo(PII i){return this.c-i.c;}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/715305.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/715305.shtml
英文地址,請注明出處:http://en.pswp.cn/news/715305.shtml

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

相關文章

leetcode hot100 每日溫度

在本題中&#xff0c;我們是通過單調棧來解決的&#xff0c;因為我們采用了棧的數據結構&#xff0c;并且&#xff0c;棧內存儲的元素是單調的。 本題我們考慮&#xff0c;將氣溫數組元素的下標存入棧中&#xff0c;首先初始化要把0放入&#xff0c;0是下標的意思。然后我們拿…

華為HCIP Datacom H12-821 卷4

1.單選題 下面哪些策略或工具不能夠應用于 OSPF: A、access-list B、prefix-list C、route- Policy D、as-path filter 正確答案&#xff1a; D 解析&#xff1a; as-path-filter命令用來創建AS路徑過濾器&#xff0c;OSPF屬于IGP協議&#xff0c;不涉及到AS號。 2.單選題…

【python基礎學習05課_for循環以及雙重for循環】

FOR循環 一、認識循環-while 1、循環條件不能超出列表長度 當i 1&#xff0c;while i < len(lst1) 時&#xff0c;i 3后, 打印print&#xff08;lst[3]&#xff09;小宋老師&#xff0c; 繼續1, i 4, 4不小于 len(lst1)&#xff0c;打破循環。 2、循環條件超出列表長度報錯…

JMeter元件和采樣器一覽

Apache JMeter是一個強大的開源負載測試工具&#xff0c;用于性能和功能測試。JMeter提供了豐富的元件和采樣器&#xff0c;使得它能夠模擬復雜的測試場景和高并發的用戶請求。以下是JMeter中常用的一些元件和采樣器的介紹和講解&#xff1a; 測試計劃元件 測試計劃&#xff0…

latex報錯I was expecting a `,‘ or a `}‘的解決辦法

解決辦法——經過檢查在ref22后面缺少一個逗號 總結 當你在使用LaTeX時遇到“I was expecting a , or a }”這樣的錯誤&#xff0c;這通常意味著LaTeX在解析你的代碼時&#xff0c;預期在某個位置看到一個逗號&#xff08;,&#xff09;或一個大括號&#xff08;}&#xff09;…

每日一題 2369

2369. 檢查數組是否存在有效劃分 題目描述&#xff1a; 給你一個下標從 0 開始的整數數組 nums &#xff0c;你必須將數組劃分為一個或多個 連續 子數組。 如果獲得的這些子數組中每個都能滿足下述條件 之一 &#xff0c;則可以稱其為數組的一種 有效 劃分&#xff1a; 子數…

PTA 1010 一元多項式求導

1010 一元多項式求導 (25分) C/C - 知乎 (zhihu.com) #include<stdio.h> int main(){ int x,n; scanf("%d %d",&x,&n); if(n0)printf("%d %d",0,0); //n0 說明是常數&#xff0c;不需要求導 else printf("%d %…

STM32 串口通信

串口發原理 在stm32每個串口內部有發送寄存器和發送移位寄存器。 當調用HAL_UART_Transmit 時&#xff0c;cpu會將發送的數據放入發送寄存器中。發送移位寄存器會將數據轉換成電平的高低&#xff0c;從TX發出。 1、輪詢模式配置、發送與接收 輪詢模式時cpu會不斷檢測發送數…

嵌入式中匯編語言的基本實現

大家好&#xff0c;今天給大家分享&#xff0c;GNU匯編的語法。 第一&#xff1a;匯編簡介 GNU 匯編語法適用于所有的架構&#xff0c;并不是 ARM 獨享的&#xff0c;GNU 匯編由一系列的語句組成&#xff0c; 每行一條語句&#xff0c;每條語句有三個可選部分&#xff0c;如下…

小白學視覺 | 詳解遺傳算法 GA(Python實現代碼)

本文來源公眾號“小白學視覺”&#xff0c;僅用于學術分享&#xff0c;侵權刪&#xff0c;干貨滿滿。 原文鏈接&#xff1a;詳解遺傳算法 GA&#xff08;Python實現代碼&#xff09; 轉自&#xff1a;機器之心 英文&#xff1a;www.analyticsvidhya.com/blog/2017/07/introduc…

在線上傳解壓PHP文件代碼,壓縮/壓縮(網站一鍵打包)支持密碼登錄

在線上傳解壓PHP文件代碼&#xff0c;壓縮/壓縮(網站一鍵打包)支持密碼登錄 資源寶分享&#xff1a;www.httple.net 如果你沒有主機控制面板這個是最好選擇&#xff0c;不需要數據庫&#xff0c;上傳當控制面板使用&#xff0c;無需安裝任何擴展&#xff0c;安全高&#xff0c;…

重拾前端基礎知識:CSS

重拾前端基礎知識&#xff1a;CSS 前言選擇器簡單選擇器屬性選擇器組合選擇器 插入CSS內嵌樣式&#xff08;Inline Style&#xff09;內部樣式&#xff08;Internal Style&#xff09;外部樣式&#xff08;External Style&#xff09; 層疊顏色背景顏色文本顏色RGB 顏色HEX 顏色…

ESD管 uClamp3331ZA、AZ5A83-01B 、AZ8523-01B國產替代ESD0321CW

上海雷卯ESD二極管 ESD0321CW替代國外品牌型號uClamp3331ZA、AZ5A83-01B 、AZ8523-01B&#xff0c;參數對比如下&#xff1a; 判斷ESD二極管是否可以替代需注意的幾點&#xff1a; 1. VRWM 是否接近 2. 抗靜電能力是否接近&#xff1b; 3. VBR 是否接近&#xff1b; 4. IPP…

【小程序】首屏渲染優化

小程序首屏渲染優化對于提升用戶體驗以及減少用戶等待時間非常重要。下面我們來詳細解析小程序首屏渲染優化的相關技巧和方法&#xff0c;并結合代碼示例進行分析。 首先&#xff0c;我們需要了解小程序的渲染流程。小程序的渲染過程可以分為兩個階段&#xff1a;解析階段和布局…

Julia語言中的位運算符、賦值運算符、算術運算符

算術運算符 # 使用基本的賦值運算符 a 10 println("a 的初始值是: $a") # 使用加法賦值運算符 a 5 println("a 加上 5 后的值是: $a") # 使用減法賦值運算符 - a - 3 println("a 減去 3 后的值是: $a") # 使用乘法賦值運算符…

Mistral發布語言大模型Mistral Large;法國新星Mistral挑戰 OpenAI 霸主地位

&#x1f989; AI新聞 &#x1f680; Mistral發布語言大模型Mistral Large 摘要&#xff1a;Mistral Large 是 Mistral AI 公司最新發布的旗艦語言模型&#xff0c;具備頂尖水平的推理能力。它主要被設計用于處理復雜的多語言推理任務&#xff0c;比如文本理解、轉換和代碼生…

上位機圖像處理和嵌入式模塊部署(上、下位機通信的三個注意點)

【 聲明&#xff1a;版權所有&#xff0c;歡迎轉載&#xff0c;請勿用于商業用途。 聯系信箱&#xff1a;feixiaoxing 163.com】 如果最終部署在客戶現場的是一個嵌入式設備&#xff0c;那么上位機在做好了算法編輯和算法部署之后&#xff0c;很重要的一步就是處理上位機和下位…

beets,一個有趣的 Python 音樂信息管理工具!

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到網站AI學習網站。 目錄 前言 什么是Beet庫&#xff1f; 安裝Beet庫 使用Beet庫 Beet庫的功能特性 1. 多種音樂格式支持 2. 自動標簽識…

【學習筆記】數據結構與算法05:樹、層序遍歷、深度優先搜索、二叉搜索樹

知識出處&#xff1a;Hello算法&#xff1a;https://www.hello-algo.com/ 文章目錄 2.4 樹2.4.1 「二叉樹 binary tree」2.4.1.1 二叉樹基本操作2.4.1.2 二叉樹的常見類型「完美二叉樹 perfect binary tree」「完全二叉樹 complete binary tree」「完滿二叉樹 full binary tre…

H12-821_106

106.如圖所示&#xff0c;RTA的GEO/0/0、GEO/0/1接口分別連接部門1和2&#xff0c;其網段分別為10.1.2.0/24、10.1.3.0/24網段&#xff0c;為限制部門1和2之間的相互訪間&#xff0c;在RTA上部署traffic-filter&#xff0c;以下哪些部署方式是正確&#xff1f; A.配置ACL3000拒…