口袋的天空

2022-05-01 06:00:06 字數 1066 閱讀 8570

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

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

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

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

輸入格式:

每組測試資料的

第一行有三個數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%的資料n<=100,m<=1000

輸出格式:

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

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

輸入樣例#1:

3 1 2

1 2 1

輸出樣例#1:

1

廈門一中yms原創

思路:快排+並查集

先把邊排一下序,又小到大,有意義(不是把同一聯通塊的點相連)的鏈結用掉,最後判斷一下,輸出答案即可。

**實現:

1 #include2 #include3

using

namespace

std;

4int

n,m,k,ans;

5int

a,b;

6int f[1010];7

struct natee[10010];8

int find(int x)

9int cmp(const nate&a,const nate&b)

10int

main()18}

19if(n==k) printf("

%d\n

",ans);

20else printf("

no answer\n");

21return0;

22 }

這麼水的題我竟然m了,我是不是智商出問題了。

口袋的天空

我tm又把n和m打反了。為什麼我找到的並查集的題都基本上可以用kruskal做啊。並查集明明可以幹很多事情的好不好。既然要把n個點連成k個 塊 那自然想到連邊要連n k條。我們對所有邊資訊按照邊權公升序排序,然後列舉所有邊,如果有一條邊連線的兩個點不在同一集合就合併並維護相關資訊。這tm還是krus...

口袋的天空

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

P1195 口袋的天空

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