口袋的天空

2022-05-04 22:45:12 字數 866 閱讀 5001

我tm又把n和m打反了。

為什麼我找到的並查集的題都基本上可以用kruskal做啊。。並查集明明可以幹很多事情的好不好。。

既然要把n個點連成k個「塊」,那自然想到連邊要連n-k條。

我們對所有邊資訊按照邊權公升序排序,然後列舉所有邊,如果有一條邊連線的兩個點不在同一集合就合併並維護相關資訊。

(這tm還是kruskal,做了多少了都)

如果發現已經連好了n-k條邊輸出權值和就好。

最後就是無解的情況了。

1 #include 2 #include 3 #include 4 #include 5

#define maxn 1000005

6using

namespace

std;

7 inline int

read()

2021

struct

edge

26};

27edge edge[maxn];

28int

father[maxn];

29int

n,m,k,ans;

30int totedge = 0;31

void

init()

35int find(int

x)40

intmain()

48 sort(edge+1,edge+m+1

);49

init();

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

56if (totedge == n-k)60}

61 printf("

no answer");

62return0;

63 }

口袋的天空

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

口袋的天空

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

P1195 口袋的天空

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