目前在乙個很大的平面房間裡有 n 個無線路由器,每個無線路由器都固定在某個點上。任何兩個無線路由器只要距離不超過 r 就能互相建立網路連線。除此以外,另有 m 個可以擺放無線路由器的位置。你可以在這些位置中選擇至多 k 個增設新的路由器。
你的目標是使得第 1 個路由器和第 2 個路由器之間的網路連線經過盡量少的中轉路由器。請問在最優方案下中轉路由器的最少個數是多少?
輸出只有乙個數,即在指定的位置中增設 k 個路由器後,從第 1 個路由器到第 2 個路由器最少經過的中轉路由器的個數。
5 3 1 3
0 05 5
0 30 5
3 53 3
4 43 0
基礎bfs,當擴充套件到是已有路由器直接入隊,若是可以增設的路由器則當增設的個數小於k時可以入隊,否則跳過,搜尋到第2個路由器時輸出結果即為最終答案。
#include
#include
#include
#include
using
namespace std;
typedef
long
long ll;
int n,m,k;
ll r;
bool a[
220]
[220];
bool vis[
220]
[110];
struct nodenode[
220]
;struct ss(
int ii,
int aa,
int ss):id
(ii)
,addnode
(aa)
,steps
(ss)};
bool
dis(node &s1,node &s2)
intmain()
} queue q;
q.push(s
(0,0
,0))
; vis[0]
[0]=
1;while
(!q.
empty()
)for
(int i=
0;ielse}}
}return0;
}
CCF 201403 4 無線網路
問題描述 目前在乙個很大的平面房間裡有 n 個無線路由器,每個無線路由器都固定在某個點上。任何兩個無線路由器只要距離不超過 r 就能互相建立網路連線。除此以外,另有 m 個可以擺放無線路由器的位置。你可以在這些位置中選擇至多 k 個增設新的路由器。你的目標是使得第 1 個路由器和第 2 個路由器之間...
CCF 201403 4 無線網路
題目大意 在這一堆路由器中找出第乙個路由器到第二個路由器經過的最少中轉路由器數,最少次數問題。用廣搜bfs,一層層搜,哪層搜到就返回層數 1,每層走的時候計搜到的新增路由器數,當經過的新增路由器數小於等於k時才入列。注意 建立鄰接表時,計算結點兩兩之間的距離,小於等於r就建立這兩個結點的連線。bfs...
CCF 201403 4 無線網路
時間限制 1.0s 記憶體限制 256.0mb 目前在乙個很大的平面房間裡有 n 個無線路由器,每個無線路由器都固定在某個點上。任何兩個無線路由器只要距離不超過 r 就能互相建立網路連線。除此以外,另有 m 個可以擺放無線路由器的位置。你可以在這些位置中選擇至多 k 個增設新的路由器。你的目標是使得...