【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的生成樹中最小的乙個。先建出一棵最小生成樹,滿足使用的邊都是最小的,剩下的邊 稱為非樹邊 一定沒有樹邊優。如果我們加入一條非樹邊,...