\(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...