最小生成樹 北極通訊網路

2021-08-22 11:42:09 字數 1032 閱讀 2686

時間限制: 1 sec  記憶體限制: 128 mb

提交: 17  解決: 7

[提交][狀態][討論版][命題人:add_xiezhenghao]

不同型號的無線電收發機有乙個不同的引數d,兩座村莊之間的距離如果不超過d就可以用該型號的無線電收發機直接通訊,d值越大的型號**越貴。擁有衛星裝置的兩座村莊無論相距多遠都可以直接通訊。

現在有k臺(1≤k≤100)衛星裝置,請你編寫乙個程式,計算出應該如何分配這k臺衛星裝置,才能使所有的無線電收發機的d值最小,並保證每兩座村莊之間都可以直接或間接地通訊。

第一行包括兩個整數n、k,表示村莊的數量和衛星裝置的數量。

之後的n行,輸入xi,yi,表示第i個村莊的座標。

輸出乙個數,代表d的最小值。輸出保留兩位小數。

3 2

10 10

10 0

30 0

10.00
k個村莊裝上衛星裝置後可以看成1個點,那麼只需要求這(n-k+1)個點和(n-k)條邊所構成的最小生成樹

利用kruskal演算法,只需要進行(n-k)次操作,最後一次操作時加入生成樹的邊的權值就是所求的d

#include#include#include#include#include#includeusing namespace std;

int n,k,m,fa[505],x[505],y[505];

double d;

struct node//儲存每條邊的兩個端點和距離

v[250000];

double dis(int ax,int ay,int bx,int by)//求兩點之間距離

int cmp(node n1,node n2)//按邊的權值從小到大排序

m--;

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

kruskal();

cout.precision(2);

cout

}

北極通訊網路

北極的某區域共有 nn 座村莊,每座村莊的座標用一對整數 x,y x,y 表示。通訊工具可以是無線電收發機,也可以是衛星裝置。無線電收發機有多種不同型號,不同型號的無線電收發機有乙個不同的引數 dd,兩座村莊之間的距離如果不超過 dd,就可以用該型號的無線電收發機直接通訊,dd 值越大的型號 越貴。...

Kruskal 北極通訊網路

不同型號的無線電收發機有乙個不同的引數d,兩座村莊之間的距離如果不超過d就可以用該型號的無線電收發機直接通訊,d值越大的型號 越貴。擁有衛星裝置的兩座村莊無論相距多遠都可以直接通訊。現在有k臺 1 k 100 衛星裝置,請你編寫乙個程式,計算出應該如何分配這k臺衛星裝置,才能使所有的無線電收發機的d...

1145 北極通訊網路

解題報告 這道題實質上是在問滿足存在k個連通塊的最小d是多少。然而並不用二分,因為在kruskal演算法的過程中本身聯通塊的數目就是遞減的,從一開始的n到k然後記錄最小值就能ac這道題了。include include include include using namespace std cons...