農夫約翰要把他的牛奶運輸到各個銷售點。
運輸過程中,可以先把牛奶運輸到一些銷售點,再由這些銷售點分別運輸到其他銷售點。
運輸的總距離越小,運輸的成本也就越低。
低成本的運輸是農夫約翰所希望的。
不過,他並不想讓他的競爭對手知道他具體的運輸方案,所以他希望採用費用第二小的運輸方案而不是最小的。
現在請你幫忙找到該運輸方案。
注意::
輸入格式
第一行是兩個整數 n,m,表示銷售點數和交通線路數;
輸出格式
輸出費用第二小的運輸方案的運輸總距離。
資料範圍
1≤n≤500,
1≤m≤1e4,
1≤z≤1e9,
資料中可能包含重邊。
輸入樣例:
4 4
1 2 100
2 4 200
2 3 250
3 4 100
輸出樣例:
450
思路:先建立最小生成樹,再遍歷每條非樹邊判斷是否能替代其中的樹邊,成為次小生成樹 。複雜度o(m + n^2 + mlogm)
#include#define ll long long
#define inf 0x3f3f3f3f
using namespace std;
const int n = 505,m=1e4+10;
int n,m;
int f[n];
int dist1[n][n],dist2[n][n];
int ne[m*2],v[m*2],w[m*2],first[n],num_edge=0;
struct ddq[m];
bool cmp(dd a,dd b)
printf("%lld\n",ans);
}
次小生成樹 秘密的牛奶運輸
農夫約翰要把他的牛奶運輸到各個銷售點。運輸過程中,可以先把牛奶運輸到一些銷售點,再由這些銷售點分別運輸到其他銷售點。運輸的總距離越小,運輸的成本也就越低。低成本的運輸是農夫約翰所希望的。不過,他並不想讓他的競爭對手知道他具體的運輸方案,所以他希望採用費用第二小的運輸方案而不是最小的。現在請你幫忙找到...
最小生成樹 次小生成樹
一 最小生成樹 說到生成樹首先要解釋一下樹,樹是乙個聯通的無向無環圖,多棵樹的集合則被稱為森林。因此,樹具有許多性質 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,...