P1195 口袋的天空

2022-03-04 01:37:58 字數 2081 閱讀 2332

給你雲朵的個數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原創

最小生成樹的變式

我們先建立乙個樸素最小生成樹,為了得到k個最下生成樹,我們相當於就是減掉k-1條邊就行了,那麼這k-1條邊一定是越大越好

但是我們已經sort一次啦呀,這已經完全ok啦啊

那就早點跳出去嘛,cnt=n-k的時候跳出去就可以了

#include using

namespace

std;

typedef

long

long

ll;#define inf 2147483647

const ll inf =0x3f3f3f3f3f3f3f3fll;

#define ri register inttemplate

inline t min(t a, t b, t c)

template

inline t max(t a, t b, t c)

template

inline t min(t a, t b, t c, t d)

template

inline t max(t a, t b, t c, t d)

#define scanf1(x) scanf("%d", &x)

#define scanf2(x, y) scanf("%d%d", &x, &y)

#define scanf3(x, y, z) scanf("%d%d%d", &x, &y, &z)

#define scanf4(x, y, z, x) scanf("%d%d%d%d", &x, &y, &z, &x)

#define pi acos(-1)

#define me(x, y) memset(x, y, sizeof(x));

#define for(i, a, b) for (int i = a; i <= b; i++)

#define ffor(i, a, b) for (int i = a; i >= b; i--)

#define bug printf("***********\n");

#define mp make_pair

#define pb push_back

const

int n = 100005;//

name*******************************

struct

edge

e[n];

intpre[n];

intrank[n];

int cnt=0

;int ans=0

;int

n,m,k;

//function******************************

bool

cmp(edge x,edge y)

void init(int

x)int find(int

x)

returnr;}

void unionone(int a,int

b)//

***************************************

intmain()}}

cout

<<"

no answer";

return0;

}

P1195 口袋的天空

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

P1195 口袋的天空

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

P1195 口袋的天空

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