次小生成樹是在最小生成樹基礎上得到的,得到最小生成樹後,將其中一條不在最小生成樹上的邊連到最小生成樹上去
則在最小生成樹上會構成乙個環,去掉環上最長的邊,則得到一棵次小生成樹,將其它所有不在最小生成樹上的邊遍歷一遍,按照這種方法操作一遍,保留的最小值就是次小生成樹的值
#include #include #include #include #include #define n 10000
#define inf 0x3f3f3f3f
using namespace std;
int nod[n][n];//存圖
int n,m;
int s=0;
int los[n];//儲存已連線的最小生成樹 到還未連線的點的最小值 los[i]表示i點到最小生成樹最短邊長為los[i]
int nex[n];//儲存表示是哪個點到還未連線的點 nex[i]=j 表示 i 和最小生成樹上的 j 點所連成的邊是i到最小生成樹距離最短的邊
int bj[n]=;//標記陣列表示是否在最小生成數內
int dt[n][n]=;//標記最小生成樹上的邊
int msi[n][n]=;//次小生成數中使用的,msi[i][j]表示最小生成樹上從i到j的最大邊長
int prim()
}printf("%d\n",s);//s為最小生成樹的值
int ans=inf;
for (int i = 0; i
最小生成樹 次小生成樹
一 最小生成樹 說到生成樹首先要解釋一下樹,樹是乙個聯通的無向無環圖,多棵樹的集合則被稱為森林。因此,樹具有許多性質 1.兩點之間的路徑是唯一的。2.邊數等於點數減一。3.連線任意兩點都會生成乙個環。對於乙個無向聯通圖g的子圖,如果它包含g的所有點,則它被稱為g的生成樹,而各邊權和最小的生成樹則被稱...
次小生成樹
演算法引入 設g v,e,w 是連通的無向圖,t是圖g的一棵最小生成樹 如果有另一棵樹t1,滿足不存在樹t t t1 則稱t1是圖g的次小生成樹 演算法思想 鄰集的概念 由t進行一次可行交換得到的新的生成樹所組成的集合,稱為樹t的鄰集,記為n t 設t是圖g的最小生成樹,如果t1滿足 t1 min,...
次小生成樹
分類 圖論 2013 02 12 15 03 32人閱讀收藏 舉報次小生成樹 在求最小生成樹時,用陣列path i j 來表示mst中i到j最大邊權。求完後,直接列舉所有不在mst中的邊,把它加入到mst中構成一棵新的樹,且該樹有環,此環是由剛加入的邊 i,j 造成的,所以可以通過刪除path i ...