JSOI2010 部落劃分 最小生成樹

2022-04-30 09:36:09 字數 644 閱讀 2531

\(kruskal\) 加一點點東西就好...

\(n\) 很小,可以暴力搞出所有的邊.

然後按照邊的大小排序. 用乙個並查集維護關係.

同時記錄聯通塊的數量,大於 \(k\) 的時候照樣維護關係.

如果已經等於 \(k\) ,直接找到第一條兩端點不在同一聯通塊的邊輸出就好.

#include#define db double

using namespace std;

const int maxn=1008;

struct sja[maxn*maxn];

int fa[maxn],num[maxn];

int n,k,cnt,pp;

db x[maxn],y[maxn],ans;

int read()

while(ch<='9'&&ch>='0')

return f*w;

}bool cmp(sj x,sj y)

int main()

sort(a+1,a+cnt+1,cmp);

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

}else

if(find(x)!=find(y))

}return 0;

}

JSOI2010 部落劃分

題目 洛谷p4047 難度 普及 提高 演算法標籤 生成樹,並查集,二分答案 分析 要使每個部落之間的距離最大,我們可以採用貪心的策略,開始時看作每個居住點就是乙個部落,每次將居住點距離最近的兩個部落合併為乙個部落,使各個部落之間的距離增大,合併至只剩k個部落,此時距離最近的兩個部落之間的距離即是靠...

P4047 JSOI2010 部落劃分

聰聰研究發現,荒島野人總是過著群居的生活,但是,並不是整個荒島上的所有野人都屬於同乙個部落,野人們總是拉幫結派形成屬於自己的部落,不同的部落之間則經常發生爭鬥。只是,這一切都成為謎團了 聰聰根本就不知道部落究竟是如何分布的。不過好訊息是,聰聰得到了乙份荒島的地圖。地圖上標註了n個野人居住的地點 可以...

BZOJ 1821 JSOI2010 部落劃分

給出n個點的座標,將n個點劃分成k個部分,使得每個部分之間最小的距離最大.每兩個點之間建邊,然後從小到到排序.要讓最小距離最大,就把小的距離用在每個部分內部,所以從小的邊開始合併,直到合併為k個部分為止.1 include 2 using namespace std 34 const int max...