有很多城市之間已經建立了路徑,但是有些城市之間沒有路徑聯通。為了聯通所有的城市,現在需要新增一些路徑,為了節約,需要滿足新增總路徑是最短的。
第一行 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臺計算機,為了方便資料傳輸,現要將它們用資料線連線起來。兩台計算機被連線是指它們之間有資料線連線。由於計算機所處的位置不同,因此不同的兩台計算機的連線費用往往是不同的。當然,如果將任意兩台計算機都用資料線連線,費用將是相當龐大的。為了節省費用,我們採用資料的間接傳輸手...