次小生成樹 秘密的牛奶運輸

2021-10-05 02:23:17 字數 970 閱讀 8681

農夫約翰要把他的牛奶運輸到各個銷售點。

運輸過程中,可以先把牛奶運輸到一些銷售點,再由這些銷售點分別運輸到其他銷售點。

運輸的總距離越小,運輸的成本也就越低。

低成本的運輸是農夫約翰所希望的。

不過,他並不想讓他的競爭對手知道他具體的運輸方案,所以他希望採用費用第二小的運輸方案而不是最小的。

現在請你幫忙找到該運輸方案。

注意:

輸入格式

第一行是兩個整數 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,...