小杉坐在教室裡,透過口袋一樣的窗戶看口袋一樣的天空。
有很多雲飄在那裡,看起來很漂亮,小杉想摘下那樣美的幾朵雲,做成棉花糖。
給你雲朵的個數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 21 2 1
輸出樣例#1:
1
廈門一中yms原創
思路:快排+並查集
先把邊排一下序,又小到大,有意義(不是把同一聯通塊的點相連)的鏈結用掉,最後判斷一下,輸出答案即可。
**實現:
1 #include2 #include3using
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個棉花糖,乙個棉花糖最少要用掉一朵雲,小杉想知道他怎麼連,花費的代價最小。輸入格式 每組測試...