#include
using
namespace
std;
const
int n = 110000;
const
int m = 220000;
const
int inf = 100000000;
int n, m, t, ans1, ans2, ise[n], f[n];
struct edge
e[m];
bool cmp(edge a, edge b)
int find(int x)
}int kru()
for(int i = 0; i < m; ++i)
}for(int i = 1; i <= n; ++i)
}if(num > 1)
return inf;
else
return ans;
}int kru1(int del)
for(int i = 1; i <= n; ++i) if(i == find(i)) num++;
if(num > 1) return inf;
else
return ans;
}int main()
sort(e, e + m, cmp);
ans1 = kru(), ans2 = inf;
for(int i = 0; i < n - 1; i++)
printf("%d %d\n", ans1, ans2);
}return
0;}/*kru()是大家熟悉的最小生成樹,但是kru1()就有了變化,他有了乙個引數,就是要刪除的那個邊,我們只需要在讀到那條邊的時候就continue就好了,然後for迴圈列舉刪除每一條邊,ans2取最小的那個就是次小生成樹的*/
最小生成樹 次小生成樹
一 最小生成樹 說到生成樹首先要解釋一下樹,樹是乙個聯通的無向無環圖,多棵樹的集合則被稱為森林。因此,樹具有許多性質 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 ...