乙個最簡單的最小生成樹
圖結構練習——最小生成樹
time limit: 1000ms memory limit: 65536k
有n個城市,其中有些城市之間可以修建公路,修建不同的公路費用是不同的。現在我們想知道,最少花多少錢修公路可以將所有的城市連在一起,使在任意一城市出發,可以到達其他任意的城市。
輸入包含多組資料,格式如下。
第一行包括兩個整數n m,代表城市個數和可以修建的公路個數。(n <= 100, m <=10000)
剩下m行每行3個正整數a b c,代表城市a 和城市b之間可以修建一條公路,代價為c。
每組輸出佔一行,僅輸出最小花費。
3 21 2 1
1 3 1
1 0
2#include0
#include
#include
#include
#include
using
namespace std;
struct node
rood[100000];
int
city[10000];
bool
cmp(node x,node y)
int
f(int
x)
int
main()
if(ans==n-1) break;
} printf("%d\n",sum);
} return 0;
}
最小生成樹演算法
由帶權的連通圖生成的數的各邊加起來稱為生成樹的權,把權值最小的生成樹稱為最小生成樹 minimum spanning tree 簡稱為mst 構造最小生成樹的方法就是利用mst性質,一條一條地選擇可以加入的邊。下面介紹兩種用於構造最小生成樹的演算法,其中第一種演算法稱為prim演算法,第二種演算法稱...
演算法 最小生成樹
前言 最小生成樹是在乙個給定的無向圖中求一棵樹,這棵樹包含無向圖中的所有頂點,且樹中的邊都來自無向圖中的邊,並且要滿足整棵樹的邊權之和最小。1 最小生成樹是樹,其邊數等於頂點數減1,且不會有環 2 對於給定的圖最小生成樹可以不唯一,但是邊權之和一定是唯一的。3 其根節點可以是這棵樹上的任何乙個節點,...
最小生成樹演算法
假設 n 表示圖中點數,m表示圖中邊數。適用於稠密圖,時間複雜度 o n2 核心思想 每次挑一條與當前集合相連的最短邊。c st i 表示點i是否在當前生成樹集合中 dist i 表示點i到當前集合的最短邊的長度 g i j 表示點i和點j之間邊的長度 返回值 最小生成樹中所有邊的總長度 intpr...