任意兩個配備了一條衛星**線路的哨所均可以通話,無論它們相距多遠。而只通過無線電收發器通話的哨所之間的距離不能超過d,這是受收發器的功率限制。收發器的功率越高,通話距離d會更遠,但同時**也更貴。
收發器需要統一購買和安裝,所以全部哨所只能選擇安裝一種型號的收發器。換句話說,每一對哨所之間的通話距離都是同乙個d。
你的任務是確定收發器必須的最小通話距離d,使得每一對哨所之間至少有一條通話路徑(直接的或者間接的)。
第1行:2個整數s(1 <= s <= 100)和p(s < p <= 500),s表示可安裝的衛星**的線路數,p表示邊防哨所的數量。
接下來p行,每行描述乙個哨所的平面座標(x,y),以km為單位,整數,0<=x,y<=10,000
第1行:1個實數d,表示無線電收發器的最小傳輸距離。精確到小數點後2位。
因為是圖論專題,所以想一想則會發現,圖的生成樹具有把圖連通的功能,
而最小生成樹的最大邊是所有生成樹中最大邊最小的。
這個性質還可以加強為:若把生成樹的n-1條邊按權值排序,則最小生成樹的每條邊都不大於另一棵生成樹。
這樣,就可以先用kruskal演算法求出一棵最小生成樹的n-1條邊(加並查集優化)。
然後找到第n-1-s條邊的長度,即是題目所求的d值。
const
maxn=1000;
maxe=500000;
type
arr=record
x,y:longint;
w:real;
end;
var dis:array[1..maxe] of arr;
edge:array[1..maxe] of arr;
x,y:array[1..maxn] of longint;
father:array[1..maxn] of longint;
n,m,nm:longint;
ans:real;
procedure
add(x,y:longint;w:real);
begin
m:=m+1;
edge[m].x:=x;
edge[m].y:=y;
edge[m].w:=w;
end;
procedure
init;
var i,j,k:longint;
distance:real;
begin
readln(nm,n);
for i:=1
to n do
readln(x[i],y[i]);
for i:=1
to n do
begin
for j:=i+1
to n do
begin
distance:=sqrt(sqr(x[i]-x[j])+sqr(y[i]-y[j]));
add(i,j,distance);
end;
end;
end;
procedure
qsort
(l,r:longint);
var i,j,k:longint;
temp:arr;
mid:real;
begin
if l>=r then
exit;
i:=l; j:=r;
mid:=edge[(l+r) div
2].w;
repeat
while edge[i].wdo i:=i+1;
while edge[j].w>mid do j:=j-1;
if i<=j then
begin
temp:=edge[i]; edge[i]:=edge[j]; edge[j]:=temp;
i:=i+1; j:=j-1;
end;
until i>j;
qsort(l,j);
qsort(i,r);
end;
function
find
(x:longint):longint;
begin
if father[x]=x then
exit(x);
father[x]:=find(father[x]);
find:=father[x];
end;
procedure
union
(x,y:longint);
var i,j:longint;
begin
i:=find(x); j:=find(y);
father[i]:=j;
end;
procedure
main;
var i,j,k:longint;
begin
init;
qsort(1,m);
for i:=1
to n do
father[i]:=i;
j:=0;
i:=1;
while j1
dobegin
with edge[i] do
begin
if find(x)<>find(y)
then
begin
j:=j+1;
dis[j]:=edge[i];
union(x,y);
end;
end;
i:=i+1;
end;
nm:=nm-1;
if nm>=n
then
write(0.00:0:2)
else
write(dis[j-nm].w:0:2);
end;
begin
main;
end.
無線通訊網 紀中3078 最小生成樹
任意兩個配備了一條衛星 線路的哨所均可以通話,無論它們相距多遠。而只通過無線電收發器通話的哨所之間的距離不能超過d,這是受收發器的功率限制。收發器的功率越高,通話距離d會更遠,但同時 也更貴。收發器需要統一購買和安裝,所以全部哨所只能選擇安裝一種型號的收發器。換句話說,每一對哨所之間的通話距離都是同...
P1991 無線通訊網 最小生成樹
每個邊防哨所都要配備無線電收發器 有一些哨所還可以增配衛星 任意兩個配備了一條衛星 線路的哨所 兩邊都 有衛星 均可以通話,無論他們相距多遠。而只通過無線電收發器通話的哨所之間的距離不能超過 d,這是受收發器的功率限制。收發器的功率越高,通話距離 d 會更遠,但同時 也會更貴。收發器需要統一購買和安...
P1991 無線通訊網 最小生成樹
每個邊防哨所都要配備無線電收發器 有一些哨所還可以增配衛星 任意兩個配備了一條衛星 線路的哨所 兩邊都 有衛星 均可以通話,無論他們相距多遠。而只通過無線電收發器通話的哨所之間的距離不能超過 d,這是受收發器的功率限制。收發器的功率越高,通話距離 d 會更遠,但同時 也會更貴。收發器需要統一購買和安...