201812 4 資料中心

2021-10-25 09:36:00 字數 1299 閱讀 2152

題目要求求圖形成的樹的邊的最大值的最小值(好繞)

總之是乙個貪心,可以通過貪心推導

(不過推導完可以發現實際上就是在求最小生成樹)

下面分別用不同的方法實現:

kruskal演算法,用到了並查集

**如下:

#include

#include

#include

#include

#define n 500001

using

namespace std;

struct node};

struct cmp};

struct unionfind

int root =

find_root

(my_union[id]);

//compress

my_union[id]

= root;

return root;

}int

union_root

(int r1,

int r2)};

intmain()

int count =0;

int max =0;

while

(count < n-1)

else

} cout

}

prim演算法其實和最短路徑的實現很像,唯一的區別就是在插入堆的時候,prim演算法插入的值為當前節點到更新節點邊的值;而最短路徑迪傑斯特拉插入的是從根到更新節點值的總和(乙個是區域性貪心,乙個是全域性貪心)

**如下:

#include

#include

#include

#include

#define n 500001

using

namespace std;

struct node};

struct cmp};

intmain()

//init

myheap.

push

(node

(r,0))

;//int count =0;

int max =0;

while

(count < n)

else}}

} cout

}

451

1 2 2

1 3 4

1 4 5

2 3 1

3 4 2

201812 4 資料中心(kruskal)

考場上的時候被題目完全蒙住了,當時狀態也不好,前幾次考試每次考試當天就頭暈感冒流鼻涕 好的,以上都是藉口,自己沒有好好複習才是真的.題目 好的,以上題目簡述就是 給你乙個無向連通圖,求它的最小生成樹的最大邊,姐妹們,如果你們考場看懂了題目帶了資料結構書或者會krukal又怎麼不會得分呢?我就是沒看懂...

CCF 201812 4 資料中心

樣例輸入45 11 2 3 1 3 4 1 4 5 2 3 8 3 4 2 樣例輸出4 樣例說明 下圖是樣例說明。分析 第一眼看到題目,想著是超級複雜的圖論問題,看懂樣例後,就感慨為啥當初我考的時候遇不到這麼簡單的題目呢?把之前14年考過的乙個最優灌溉 複製一下,改幾行 幾分鐘就ac了。言歸正傳,題...

CCF CSP 201812 4 資料中心

題目的意思說白了就是找到乙個最小值k,使得用小於等於k的邊組成的圖是聯通的即可。二分這個k判定下就好了。第二種做法就是求mst裡面的最大邊就是答案。includeusing namespace std define pii pair define mp make pair const int max...