P1991 無線通訊網 最小生成樹

2022-05-01 16:24:09 字數 1752 閱讀 9943

每個邊防哨所都要配備無線電收發器;有一些哨所還可以增配衛星**。

任意兩個配備了一條衛星**線路的哨所(兩邊都ᤕ有衛星**)均可以通話,無論他們相距多遠。而只通過無線電收發器通話的哨所之間的距離不能超過 d,這是受收發器的功率限制。收發器的功率越高,通話距離 d 會更遠,但同時**也會更貴。

收發器需要統一購買和安裝,所以全部哨所只能選擇安裝一種型號的收發器。換句話說,每一對哨所之間的通話距離都是同乙個 d。你的任務是確定收發器必須的最小通話距離 d,使得每一對哨所之間至少有一條通話路徑(直接的或者間接的)。

輸入格式:

從 wireless.in 中輸入資料第 1 行,2 個整數 s 和 p,s 表示可安裝的衛星**的哨所數,p 表示邊防哨所的數量。接下裡 p 行,每行兩個整數 x,y 描述乙個哨所的平面座標(x, y),以 km 為單位。

輸出格式:

輸出 wireless.out 中

第 1 行,1 個實數 d,表示無線電收發器的最小傳輸距離,精確到小數點後兩位。

輸入樣例#1: 複製

2 4

0 100

0 300

0 600

150 750

輸出樣例#1: 複製

212.13
對於 20% 的資料:p = 2,s = 1

對於另外 20% 的資料:p = 4,s = 2

對於 100% 的資料保證:1 ≤ s ≤ 100,s < p ≤ 500,0 ≤ x,y ≤ 10000。

開啟題解一看瓶頸生成樹??

按照自己的思路打了一下沒想到就過了。。

#includeusing

namespace

std;

//input by bxd

#define rep(i,a,b) for(int i=(a);i<=(b);i++)

#define repp(i,a,b) for(int i=(a);i>=(b);--i)

#define ri(n) scanf("%d",&(n))

#define rii(n,m) scanf("%d%d",&n,&m)

#define riii(n,m,k) scanf("%d%d%d",&n,&m,&k)

#define rs(s) scanf("%s",s);

#define ll long long

#define pb push_back

#define rep(i,n) for(int i=0;i

#define clr(a,v) memset(a,v,sizeof a)

#define inf 0x3f3f3f3f

////////////////////////////////////

//const

int n = 500+5

;int

f[n];

int find1(int

x)struct

node

s[n],s2[n*n];

intn,m;

int cnt=0

;bool

cmp(node a,node b)

intmain()

rep(i,

1,b)

rep(j,

1,b)

if(j>i)

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

int x=a;

rep(i,

1,cnt)}}

view code

P1991 無線通訊網 最小生成樹

每個邊防哨所都要配備無線電收發器 有一些哨所還可以增配衛星 任意兩個配備了一條衛星 線路的哨所 兩邊都 有衛星 均可以通話,無論他們相距多遠。而只通過無線電收發器通話的哨所之間的距離不能超過 d,這是受收發器的功率限制。收發器的功率越高,通話距離 d 會更遠,但同時 也會更貴。收發器需要統一購買和安...

P1991 無線通訊網 MST

每個邊防哨所都要配備無線電收發器 有一些哨所還可以增配衛星 任意兩個配備了一條衛星 線路的哨所 兩邊都 有衛星 均可以通話,無論他們相距多遠。而只通過無線電收發器通話的哨所之間的距離不能超過 d,這是受收發器的功率限制。收發器的功率越高,通話距離 d 會更遠,但同時 也會更貴。收發器需要統一購買和安...

題解 P1991 無線通訊網

題目 這一題對我有歷史性的意義,因為我深刻意識到 不要用namespace 不要用namespace 不要用namespace 寫此題解,以示他人。搞錯重點了吧喂!好,回歸正題 這道題的思路是這樣 首先,用kruskal演算法。建議先把 並查集模板與 最小生成樹模板 打了再繼續看 我們回顧一下kru...