每日一題 建立聯絡 最小生成樹

2022-04-29 05:51:11 字數 1532 閱讀 8416

最小生成樹,語文閱讀能力的水平
首先,題目中給的 k 並不是要我們去從所有的關係中找 k 個人,而是告訴我們

現在已經有 k 個人組成一團了,那麼還有幾個人孤苦伶仃呢?當然是 n - k 個

人了,假設 原先的那 k 個人就是乙個整體,那麼現在要將這 n - k 個人和 k

組成乙個大的整體(請仔細閱讀最後的那句話,人與人之間,且一定存在答案)

我們要將 n - k 個人和原來的 k 聯合到一起需要幾條邊呢?

我們發現要想都聯絡到一起,還需要 n - k 條邊。

題目要求我們最後使得連到一起的代價最小,怎麼就最小了呢?

我們發現這 k 個人是不確定的,那什麼是確定的呢?我們需要加幾條邊是確定的,也就是我

們可以按照 權值大小進行從小到大排序,找 n - k 條邊即可。

#include #include #include #include #include #include using namespace std;

const int maxn = 5e5 + 10;

typedef long long ll;

struct node friends[maxn];

ll fa[maxn];

ll n,m,k;

// 查詢

ll get(ll x)

// 合併

void union(ll x,ll y)

bool cmp(node a,node b)

int main(void)

// 初始化

for(int i = 0; i <= n; i ++)

// 按照權值從小到大排序

sort(friends + 1,friends + 1 + m,cmp);

ll res = 0;

ll t = 0;

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

if(t == n - k) break;

} printf("%lld\n",res);

return 0;

}

計蒜客這模擬賽的題水平可以啊,哈哈,高估了自己,低估了蒜你狠。

在 k 這裡還拐個彎,一定要認真讀題,否則,調都不知道何處下手。

對了,記得開 long long.

師傅說 :

三年 oi 一場空,不開 long long 見祖宗。

(精闢)

每日一題 通電(最小生成樹演算法)

2020.10.16第二次每日一題 要讓所有的村莊連在一起,並且花費最小,標準的最小生成樹問題 什麼是最小生成樹呢?網上搜都能搜到。常用的最小生成樹演算法一般是兩個 1.prim演算法 不斷加點的方式 2.kruskal演算法 不斷加邊的方式,這裡先給出kruskal的演算法。首先就是存點和邊,然後...

聯絡員(最小生成樹)

description tyvj已經一歲了,也由最初的幾個使用者增加到了上萬個使用者,隨著tyvj 的逐步壯大,管理員的數目也越來越多,現在你身為tyvj管理層的聯絡員,希望你找到一些通訊渠道,使得管理員兩兩都可以聯絡 直接或者是間接都可以 tyvj是乙個公益性的 沒有過多的利潤,所以你要盡可能的使...

最小生成樹(入門題)

time limit 1000ms memory limit 65536k 有疑問?點這裡 有n個城市,其中有些城市之間可以修建公路,修建不同的公路費用是不同的。現在我們想知道,最少花多少錢修公路可以將所有的城市連在一起,使在任意一城市出發,可以到達其他任意的城市。輸入包含多組資料,格式如下。第一行...