王道 例11 4暢通工程(Kruskal)

2021-10-22 17:26:34 字數 899 閱讀 3432

在乙個無向連通圖,如果存在乙個連通子圖包含原圖所有頂點和部分邊,且子圖不存在迴路,就稱這個子圖為原圖的一顆生成樹。在帶權無向連通圖,所有生成樹中邊權的和最小那顆稱為最小生成樹

步驟如下:

關鍵**:

int

kruskal

(int n,

int edgenumber)

}return sum;

}

題意:給出n個點,n*(n-1)/2條路,求最少的距離將所有點連線起來。

#include

#include

using

namespace std;

const

int maxn=

100;

struct edge

;edge edge[maxn*maxn]

;int father[maxn]

;int height[maxn]

;void

initial

(int n)

}//尋找根節點

intfind

(int x)

void

union

(int x,

int y)}}

bool

cmp(edge a,edge b)

intkruskal

(int n,

int edgenumber)

}return sum;

}int

main()

int answer=

kruskal

(n,edgenumber)

; cout<}}

暢通工程續

description 某省自從實行了很多年的暢通工程計畫後,終於修建了很多路。不過路多了也不好,每次要從乙個城鎮到另乙個城鎮時,都有許多種道路方案可以選擇,而某些方案要比另一些方案行走的距離要短很多。這讓行人很困擾。現在,已知起點和終點,請你計算出要從起點到終點,最短需要行走多少距離。input ...

暢通工程續

b 暢通工程續 crawling in process.crawling failed time limit 1000msmemory limit 32768kb64bit io format i64d i64u submit status practice hdu 1874 description...

暢通工程續

problem description 某省自從實行了很多年的暢通工程計畫後,終於修建了很多路。不過路多了也不好,每次要從乙個城鎮到另乙個城鎮時,都有許多種道路方案可以選擇,而某些方案要比另一些方案行走的距離要短很多。這讓行人很困擾。現在,已知起點和終點,請你計算出要從起點到終點,最短需要行走多少距...