最小生成樹 九度1144 Kruskal

2021-07-27 11:36:30 字數 897 閱讀 9927

【2017/2/25】

題目:

題意:平面上有若干個點,用線段將這些點連線起來,使任意兩個點能夠通過一系列線段相連,給出所有點的座標,求一種連線方式使所有線段的長度最小,求長度和

思路:題目本身就是kruskal演算法找最小生成樹,沒什麼難度;重點在於資料的轉化處理。需要把原始的座標資訊,轉化為點的編號。

#include

#include

#include

#define maxsize 10005

using

namespace

std;

struct point point[105];

struct road road[maxsize];

int tree[105];

bool cmp(road a, road b)

int findroot(int x)

}void getroad(int n)

}}int main()

for (int i = 1; i <= n; i++)

getroad(n); //資料處理

sort(road + 1, road + maxn + 1, cmp);//按長度遞減排序

double sum = 0;

for (int i = 1; i <= maxn; i++)

}/* int mst = 0; //判斷是否為最小生成樹

for (int i = 1; i <= maxn; i++)

*/printf("%.2lf\n", sum);

}return

0;}

九度 1154《最小生成樹》

北大10機試 1154 jungle roads wa 原因,初始化時為1 size 1,而使用時ch a 是從0開始的。但是,本地測試卻與答案相同!所以,優點隱蔽。所以初始化時,為0 size 1時,就安全保險了。還需要養成習慣,做到點的開始為1。除非規定了第乙個點為0.include inclu...

最小生成樹 次小生成樹

一 最小生成樹 說到生成樹首先要解釋一下樹,樹是乙個聯通的無向無環圖,多棵樹的集合則被稱為森林。因此,樹具有許多性質 1.兩點之間的路徑是唯一的。2.邊數等於點數減一。3.連線任意兩點都會生成乙個環。對於乙個無向聯通圖g的子圖,如果它包含g的所有點,則它被稱為g的生成樹,而各邊權和最小的生成樹則被稱...

總結 次小生成樹 最小度限制生成樹

給定一張n nn個點m mm條邊的無向圖,求無向圖的嚴格次小生成樹。設最小生成樹的邊權之和為sum sumsu m 嚴格次小生成樹就是指邊權之和大於sum sumsu m的生成樹中最小的乙個。先建出一棵最小生成樹,滿足使用的邊都是最小的,剩下的邊 稱為非樹邊 一定沒有樹邊優。如果我們加入一條非樹邊,...