hpuoj 最優規劃(最小生成樹)

2021-09-16 14:15:39 字數 1077 閱讀 6722

有很多城市之間已經建立了路徑,但是有些城市之間沒有路徑聯通。為了聯通所有的城市,現在需要新增一些路徑,為了節約,需要滿足新增總路徑是最短的。

第一行 3 個整數 n, m, s, 分別表示城市的數量、已經存在的路的數量、可修的路的數量。

之後的 m 行,每行 3 個整數 x, y, d,表示點 x 到點 y 有一條長度為 d 的已經存在的路徑。

之後的 s 行,每行 3 個整數 x, y, d,表示點 x 到點 y 有一條長度為 d 的可修的路徑。

0輸出乙個整數表示需要新增的最短的路徑長度。

若果無論如何也無法使得所有的城市聯通,輸出concubines can't do it.

樣例input

5 3 2

1 2 1

1 3 2

1 4 3

2 3 4

2 5 5

output

5
很顯然是最小生成樹,前m條道路先加入,後面的s條取短的,比賽的時候忘了kruskal咋寫也是難受。

#include#include#includeusing namespace std;

typedef long long ll;

ll n, m, b;

ll pre[100010];

ll cnt = 0;

struct node

}a[100010];

inline ll find(ll x)

inline void join(ll x, ll y)

void kruskal()

for (int i = 1; i <= n; i++)

if (find(i) == i)

num++;

if (num == 1) //若能聯通

cout << cnt << endl;

else

cout << "concubines can't do it." << endl;

}int main()

CCF CSP 最優灌溉 最小生成樹

問題描述 雷雷承包了很多片麥田,為了灌溉這些麥田,雷雷在第乙個麥田挖了一口很深的水井,所有的麥田都從這口井來引水灌溉。為了灌溉,雷雷需要建立一些水渠,以連線水井和麥田,雷雷也可以利用部分麥田作為 中轉站 利用水渠連線不同的麥田,這樣只要一片麥田能被灌溉,則與其連線的麥田也能被灌溉。現在雷雷知道哪些麥...

最小生成樹 最優佈線問題

題目描述 學校有n臺計算機,為了方便資料傳輸,現要將它們用資料線連線起來。兩台計算機被連線是指它們之間有資料線連線。由於計算機所處的位置不同,因此不同的兩台計算機的連線費用往往是不同的。當然,如果將任意兩台計算機都用資料線連線,費用將是相當龐大的。為了節省費用,我們採用資料的間接傳輸手段,即一台計算...

最優佈線問題(最小生成樹)

description 學校有n臺計算機,為了方便資料傳輸,現要將它們用資料線連線起來。兩台計算機被連線是指它們之間有資料線連線。由於計算機所處的位置不同,因此不同的兩台計算機的連線費用往往是不同的。當然,如果將任意兩台計算機都用資料線連線,費用將是相當龐大的。為了節省費用,我們採用資料的間接傳輸手...