洛谷 P1195 口袋的天空

2022-05-13 07:47:43 字數 1241 閱讀 2335

小杉坐在教室裡,透過口袋一樣的窗戶看口袋一樣的天空。

有很多雲飄在那裡,看起來很漂亮,小杉想摘下那樣美的幾朵雲,做成棉花糖。

給你雲朵的個數nn,再給你mm個關係,表示哪些雲朵可以連在一起。

現在小杉要把所有雲朵連成kk個棉花糖,乙個棉花糖最少要用掉一朵雲,小杉想知道他怎麼連,花費的代價最小。

輸入格式:

每組測試資料的

第一行有三個數n,m,k(1≤n≤1000,1≤m≤10000,1≤k≤10)

接下來m個數每行三個數x,y,l表示x雲和y雲可以通過l的代價連在一起。(1≤x,y≤n,0≤l<10000)

30%的資料1000n≤100,m≤1000

輸出格式:

對每組資料輸出一行,僅有乙個整數,表示最小的代價。

如果怎麼連都連不出kk個棉花糖,請輸出'no answer'。

解析

題目特別坑,

連的邊數 得到的樹的個數

n-1 1

n-2 2

n-3 3

n-k k

所以我們如果想要連出k棵樹,就需要連n-k條邊。

也就是說最後是n-k條邊而不是k-1條邊;

明白這一點就是乙個簡單的kruscal

**

#includeusing

namespace

std;

intn,m,k;

int f[5005

];void

clean()}//

初始化並查集

int mf(intv)}

//找爹

void mer(int a,intb)}

//合併

struct

make_edge;//

每條邊

make_edge edge[

200005

];bool

cmp(make_edge a,make_edge b)

intmain()

sort(edge+1,edge+m+1,cmp);//

排序 int count=0;//

邊數 int sum=0

;

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

if(count==n-k)

}if(count"

no answer

"

}

洛谷P1195 口袋的天空

小杉坐在教室裡,透過口袋一樣的窗戶看口袋一樣的天空。有很多雲飄在那裡,看起來很漂亮,小杉想摘下那樣美的幾朵雲,做成棉花糖。給你雲朵的個數n,再給你m個關係,表示哪些雲朵可以連在一起。現在小杉要把所有雲朵連成k個棉花糖,乙個棉花糖最少要用掉一朵雲,小杉想知道他怎麼連,花費的代價最小。輸入格式 每組測試...

洛谷P1195 口袋的天空

小杉坐在教室裡,透過口袋一樣的窗戶看口袋一樣的天空。有很多雲飄在那裡,看起來很漂亮,小杉想摘下那樣美的幾朵雲,做成棉花糖。給你雲朵的個數 n 再給你 m 個關係,表示哪些雲朵可以連在一起。現在小杉要把所有雲朵連成 k 個棉花糖,乙個棉花糖最少要用掉一朵雲,小杉想知道他怎麼連,花費的代價最小。輸入格式...

洛谷P1195 口袋的天空

題目背景 小杉坐在教室裡,透過口袋一樣的窗戶看口袋一樣的天空。有很多雲飄在那裡,看起來很漂亮,小杉想摘下那樣美的幾朵雲,做成棉花糖。題目描述 給你雲朵的個數n,再給你m個關係,表示哪些雲朵可以連在一起。現在小杉要把所有雲朵連成k個棉花糖,乙個棉花糖最少要用掉一朵雲,小杉想知道他怎麼連,花費的代價最小...