Kruskal 北極通訊網路

2021-09-25 13:01:38 字數 836 閱讀 1535

不同型號的無線電收發機有乙個不同的引數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
這題是就是用最小生成樹的kruskal方法來做,為使所有村莊可以通訊,將村莊都看作乙個點,需要連線的邊的條數等於村莊的數量減去衛星裝置的數量,即n-k(有衛星裝置的點看作是已經選中的點,沒有的點是待加入的點),由於kruskal加入邊是按照由小到大的順序進行的,所以最後一次加入的邊的長度就是最小的d值。

#include#include#include#includeusing namespace std;

int n,k,m=1,father[505];

struct node

va[250000];

double dis(int x1,int y1,int x2,int y2)

bool cmp(node x,node y)

} m--;

kruskal();

return 0;

}

北極通訊網路

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

1145 北極通訊網路

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

北極網路(Kruskal)

國防部 dnd 希望通過無線網路連線幾個北部前哨站。在建立網路時將使用兩種不同的通訊技術 每個前哨站都有乙個無線電收發器,一些前哨站還有乙個通訊衛星。任意兩個擁有通訊衛星的前哨站不論它們的位置如何,都可以通過衛星進行通訊。而如果利用無線電進行通訊,則需要兩個前哨站的距離不能超過d方可進行通訊。而d的...