最短路中部分點只能從中任意選取K個問題

2021-06-22 18:48:03 字數 819 閱讀 1110

題意:給n個點,還有另外m個點(其中只能選k個),求最短路。

思路:在spfa的基礎上,用乙個陣列來統計,在某點入隊時(要拓展其他點了),若該點是m個點中的,則count【i】=原來的+1;若不是,則繼承原來的。出隊時候限制一下,若大於k了,就停止拓展。

原題:目前在乙個很大的平面房間裡有 n 個無線路由器,每個無線路由器都

固定在某個點上。任何兩個無線路由器只要距離不超過 r 就能互相建立網

絡連線。

除此以外,另有 m 個可以擺放無線路由器的位置。你可以在這些位置

中選擇至多 k 個增設新的路由器。

你的目標是使得第 1 個路由器和第 2 個路由器之間的網路連線經過盡

量少的中轉路由器。請問在最優方案下中轉路由器的最少個數是多少?

#include#include#includeusing namespace std;

struct points

;const int inf=0x3f3f3f3f;

int n,m,k,r;

vectorv; //點

int map[205][205]; //圖

int dis(points a,points b) //距離

void get_gra() //建圖

else //一般的點繼承

inq[i]=1;

q.push(i);}}

}}

}int main()

get_gra();

spfa();

cout<

最短路 部分例題

記錄一下最短路的一些經典例題,當做是模板來用吧。例題 title agri net include include include include include include define shuzu 101 int maxn 0x7fffffff using namespace std int...

Dijkstra演算法 最短路徑 (部分)

void dijkstra int n,int v,int dist,int prev,int c maxnum maxnum dist v 0 s v 1 依次將未放入s集合的結點中,取dist最小值的結點,放入結合s中 一旦s包含了所有v中頂點,dist就記錄了從源點到所有其他頂點之間的最短路徑...

CSS中部分標籤

11.18 1.css3 2d轉換 translate 方法,根據左 x軸 和頂部 y軸 位置給定的引數,從當前元素位置移動。rotate 方法,在乙個給定度數順時針旋轉的元素。負值是允許的,這樣是元素逆時針旋轉。scale 方法,該元素增加或減少的大小,取決於寬度 x軸 和高度 y軸 的引數 sk...