首页 > 其他分享 >0-1 BFS

0-1 BFS

时间:2023-09-21 22:12:33浏览次数:30  
标签:deque dij 队尾 BFS ... dis

前言:做这道题发现dij过不了,意识到自己不会0-1 BFS,遂查,发现网上的解释很多都不清楚,oi wiki 好像没讲,自己证明了一下。

算法过程:

用于求边权为 \(0\) 或 \(1\) 的图的最短路。方法就是把 dij 的单调队列换成一个 deque,每次更新如果用边权为 \(0\) 的边,把新的点放到队首,反之放到队尾,复杂度显然 \(\Theta (n+m)\)。

为什么是对的:

根据 dij 的正确性证明,只需证 deque 内的点的 \(dis\) 单调不增。
下证明 deque 内的数的 \(dis\) 事实上形如 \(d,d,...d,d+1,d+1,...,d+1\)。

  1. 初始时,deque 内的数的 \(dis\) 为 \([0]\),符合要求
  2. 每次拓展时取链头 \(u\),\(dis_u=d\) 故当更新到边权为 \(0\) 的 \(dis_v=d\),放在队头,满足性质,否则 \(dis_v=d+1\),放在队尾,仍满足性质。

综上,命题成立

标签:deque,dij,队尾,BFS,...,dis
From: https://www.cnblogs.com/tybbs/p/17721091.html

相关文章

  • 八皇后(bfs)旧题新做
    题意题目链接:https://www.luogu.com.cn/problem/P1219?contestId=130784题意就是给一个NxN的矩阵,然后放N个皇后,问可以怎么放,有多少种放法。思路dfs。需要三个数组,col[i]用来存第i列是否放置了皇后,dg[i]用来存对角线i是否放置了皇后,udg[i]用来存反对角线......
  • POJ 2935 Basic Wall Maze BFS
    注意墙的处理,我是这么做的,把每个方块不能行走的方向标记出来,剩他的就是传统BFS了。#include<stdio.h>#include<queue>usingnamespacestd;intsx,sy,ex,ey;inth[4]={1,-1,0,0};intg[4]={0,0,1,-1};intdir[8][8][5];boolvisit[7][7];structpoint{ intx; inty; in......
  • RBFS简单理解
    论文引用Sharma,DishaandSanjayKumarDubey.“ComparativeStudyofRBFS&ARBFSAlgorithm.”IOSRJournalofComputerEngineering10(2013):105-110.前言论文中的伪代码可能有错误贴一份写的比较清楚点的帖子算法思路在h函数保证一致性的情况下,第一次扩展到n时......
  • 2013_q2bfsm
    moduletop_module(inputclk,inputresetn,//active-lowsynchronousresetinputx,inputy,outputf,outputg);parameterA=0,B=1,C=2,D=3,E=4,F=5,G=6,H=7,ON=14,OFF=15;reg[3:0]state,nst......
  • hdu 1372 Knight Moves 骑士的移动 bfs--马走日
    #include<stdio.h>#include<string.h>#include<queue>usingnamespacestd;charss[3],ee[3];intx1,y1,x2,y2;structpos{intx,y,step;}sta,end;intf[10][10];intdir[8][2]={1,2,1,-2,-1,2,-1,-2,2,1,2,-1,-2,1,-2,-1};boolfan......
  • 邻接矩阵的BFS
    intArrNum(GraphG,intver){for(inti=0;i<G.VerNum;i++)if(G.Ver[i]==ver)returni;elsereturn-1;}intFirstNeighbor(GraphG,intver){intx=ArrNum(G,ver);for(inti=0;i<G.VerNum;i++){......
  • hdu:Rescue(bfs+优先队列)
    ProblemDescriptionAngelwascaughtbytheMOLIGPY!HewasputinprisonbyMoligpy.TheprisonisdescribedasaN*M(N,M<=200)matrix.ThereareWALLs,ROADs,andGUARDsintheprison.Angel’sfriendswanttosaveAngel.Theirtaskis:approach......
  • hdu:Knight Moves(bfs)
    ProblemDescriptionAfriendofyouisdoingresearchontheTravelingKnightProblem(TKP)whereyouaretofindtheshortestclosedtourofknightmovesthatvisitseachsquareofagivensetofnsquaresonachessboardexactlyonce.Hethinksthatthe......
  • hdu:A strange lift(bfs)
    ProblemDescriptionThereisastrangelift.Theliftcanstopcanateveryfloorasyouwant,andthereisanumberKi(0<=Ki<=N)oneveryfloor.Thelifthavejusttwobuttons:upanddown.Whenyouatfloori,ifyoupressthebutton“UP”,youwi......
  • leetcode 题库994——bfs典型解法(队列+递归实现)
     classSolution:deforangesRotting(self,grid:list[list[int]])->int:m,n=len(grid),len(grid[0])queue,good=[],[]defbfs(queue,good,m,n,grid):times=0directions=[(-1,0),(1,0),(0,1),(0,-1)]......