題目描述
有n個村莊,編號從1到n,你應該建造一些道路,使每個村莊都可以相互連線。
兩個村a和b是相連的,當且僅當a和b之間有一條道路,或者存在乙個村c使得在a和c之間有一條道路,並且c和b相連。
現在一些村莊之間已經有一些道路,你的任務就是修建一些道路,使所有村莊都連通起來,並且所有道路的長度總和是最小的。
輸入測試資料有多組
第一行是整數n(3 <= n <= 100),代表村莊的數量。 然後是n行,其中第i行包含n個整數,這些n個整數中的第j個是村莊i和村莊j之間的距離(距離是[1,1000]內的整數)。
然後是整數q(0 <= q <= n *(n + 1)/ 2),接下來是q行,每行包含兩個整數a和b(1 <= a輸出
輸出對於每組測試資料
輸出乙個整數,表示要構建的道路的長度總和最小值
樣例輸入
30 990 692
990 0 179
692 179 0
11 2
樣例輸出
**
#include
#include
#include
#define infinity 999999
using
namespace std;
struct edge
;class
graph
//沒有使用動態陣列,待優化}}
for(
int i=
1;i<=vexnum;i++
)//初始化並查集
father[i]
=i;int road;
cin >> road;
for(
int i=
0;iintfind
(int a)
void
sort()
//邊陣列從0開始}}
}int
kruskal()
}return value;}}
;int
main()
目的
乙個筆記
DS線性結構 火車問題 Ver I
某火車站只有一條鐵軌供火車停靠,所有的列車都從一側進入,從另一側出來。如果此時,列車a首先進入鐵路,然後列車b在列車a離開之前進入鐵路,則列車a不能離開,直到列車b離開 如下圖所示 車站最多有9列火車,所有火車都有乙個id 編號從1到n 列車按照order1的順序進入鐵路,你需要確定列車可以以ord...
JOISC2018 道路建設 LCT
loj傳送門 考的時候打的大暴力,其實想到了lct,但是思路有點沒轉過來。就算想到了估計也不能切,我沒有在考場寫lct的自信。其實這題不是讓你直接用lct維護答案,只是借用了lct的架構,讓權值相同的點在同一棵splay中,用一棵splay頂端的點的權值表示這棵splay中所有點的權值。發現從根到某...
XSY3370 道路建設 最短路
有乙個完全圖,邊有邊權。對於每個 i 求一棵生成樹,使得 sum n j 到 i 的路徑上邊權最小值 最小。n leq 2000,w leq 9 記最小的邊權 w 這條邊的乙個端點為 s 那麼 i 號點對應的生成樹就是從 i 到 s 的一條路徑,然後經過邊權最小的邊,再連向所有點。可以發現 i 到 ...