洛谷P5068 我回來了 bfs

2022-09-01 09:21:11 字數 1780 閱讀 7504

珂朵莉給你乙個無向圖,每次查詢的時候給一堆二元組(xi

,yi)

(xi​

,yi​

)求圖中有多少個點u

u與至少乙個這次詢問給出的二元組(xi

,yi)

(xi​

,yi​

)滿足dis

t(u,

xi)≤

yidi

st(u

,xi​

)≤yi

,dist

dist

表示這兩個點在圖中的距離

如果不連通dis

t=in

fdis

t=in

f第一次寫出來yno

iyno

i的題。雖然這是ynoi為數不多的良心題(霧設p[

i][j

]p[i

][j]

表示距離點i

i最短路長度不超過j

j的節點集合,那麼我們只要求出長度等於j

j的節點集合,然後或上p[i

][j−

1]p[

i][j

−1]即可。

對於每乙個點進行一次bfs

bfs即可求出pp。

然後對於每一次詢問,其實答案節點集合就是p[x

1][y

1]or

p[x2

][y2

]or.

..or

p[xt

][yt

]p[x

1​][

y1​]

orp[

x2​]

[y2​

]or.

..or

p[xt

​][y

t​]。

pp的型別是c++

c++自帶的bit

setb

itse

t。每一位只能是0或1,占用空間1b1

b。時間複雜度玄學。

還有洛谷討論區中說這道題似乎卡鄰接表。。。用vec

torv

ecto

r存邊即可。

#include

#include

#include

#include

#include

#include

using

namespace std;

const

int n=

1010

,m=100010

,inf=

1e9;

int n,m,q,x,y,t,tot,dis[n]

;bitset p[n]

[n];

vector<

int> e[n]

;inline

intread()

inline

void

bfs(

int s)}}

for(

register

int i=

1;i) p[s]

[i]|

=p[s]

[i-1];

}signed

main()

for(

register

int i=

1;i<=n;i++

)bfs

(i);

while

(q--

)printf

("%d\n"

,ans.

count()

);}return0;

}

hrbust 1948我又回來了 基礎bfs

我又回來了 time limit 1000 ms memory limit 32768 k total submit 165 68 users total accepted 66 58 users rating special judge no description 小輝穿越到了乙個很適合他的年代...

洛谷八連測R7 nzhtl1477 我回來了

68號島有n個商店,有的商店直接有小路連線,小路的長度都為1,格里克告訴了你哪些地方可能有做黃油蛋糕的原料。但是那個人是個坑貨,所以他會告訴你一些商店,然後告訴你距離這些商店距離 k的商店中都是可能有原料的。然後你要把這些可能的商店每個都去一遍,你想知道你要去多少個商店。由於你是勇者,所以有m次詢問...

洛谷P3958 乳酪 bfs

題解 先對球按照高度 即z zz座標 排個序,對於每個球,我們對與它相交或者相切的球建邊,然後從最下面的球開始bfs bfsbf s就好了。坑點 有可能與下表面相交或相切的不止乙個,還有距離要用double include using namespace std struct ball a 1010...