時間限制: 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 210 10
10 0
30 0
10.00k個村莊裝上衛星裝置後可以看成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...