唤醒你的感官,颠覆你的想象——“喿臿辶喿臿辶喿臿辶不用下拉”的奇妙体验

核心内容摘要

Jalapskxixi2025:开启奇幻新篇章,你的专属电影宇宙等你探索!
18岁,那些年少心动的黄油:怦然心动的少女心事与梦想

薰衣草2025:解锁未来,实验室的秘密花园

【双端队列bfs】笔记而已推荐好文推荐视频双端队列bfs是解决

bfs最常用的一种手段

bfs就是边值只有0或1两种情况时用的bfs一般是求起点到终点所用边值总值最小为多少用例题更好说明

拖拉机这里在通过没有干草块的位置时所用边值为零通过有干草块位置时边值为1要求需要移除最少的数量那么一定是能不移就不移最好实在需要移再移换句话说就是优先走没有干草块的位置当走完没有干草块的位置时再走有干草块的位置此时可以用双端队列deque来实现将没有干草块的压入队头有干草块的压入队尾每次只用队头元素就能实现先走边值为0再走边值为1不同于朴素bfs

bfs不需要判重数组一个点可能多次经过但是只有在值更小时才需要更新代码#includebits/stdc.h//#define int long longusingnamespacestd;boolg[1015][1015];intdx[]{1,-1,0,0};intdy[]{0,0,1,-1};intdis[1015][1015];structnode{intx,y;};dequenodedq;intn,x,y;voidbfs(intx,inty){dq.push_front((node){x,y});while(dq.size()){intaxdq.front().x,aydq.front().y;dq.pop_front();for(inti0;i4;i){intsxaxdx[i],syaydy[i];if(sx0sx1010sy0sy

{if(dis[sx][sy]dis[ax][ay]g[sx][sy])continue;//只有值更小时才需要更新if(!g[sx][sy])dq.push_front((node){sx,sy}),dis[sx][sy]dis[ax][ay];if(g[sx][sy])dq.push_back((node){sx,sy}),dis[sx][sy]dis[ax][ay]1;if(!sx!sy)return;}}}}voidsolve(){cinnxy;while(n--){inta,b;cinab;g[a][b]1;}memset(dis,1e6,sizeof(dis));dis[x][y]0;bfs(x,y);coutdis[0][0]endl;}signedmain(){intt1;//cint;while(t--){solve();}return0;}

免费版安装9.1免费版-免费版安装9.1免费版应用

百度百家号客服电话人工服务

123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123