
算法最短路
lllixingrui
这个作者很懒,什么都没留下…
展开
-
洛谷P1119 灾后重建 Floyd
题目大意n个点,0到n-1,m条无向边,每个村庄都有一个重建好的时间,一建好,立刻通车,并且每个村庄重建好的时间时不递减的,现在给你q次询问,问x,y在时间t是否连通,若连同求出最短路径,并且t也是不下降的思路 由于n<=200且是多源问题,又是求最短路,所以使用Floyd算法,又因为村庄重建好的时间是不递减的,每次询问也是不递减的,我们每次询问的时候只需遍历更新当前询问时间段之前的点就可以了关键代码scanf("%d%d%d",&u,&v,&tt);while(t[原创 2021-07-27 10:07:15 · 167 阅读 · 0 评论 -
通往奥格瑞玛的道路(二分+迪杰斯特拉堆优化)
题目背景在艾泽拉斯大陆上有一位名叫歪嘴哦的神奇术士,他是部落的中坚力量有一天他醒来后发现自己居然到了联盟的主城暴风城在被众多联盟的士兵攻击后,他决定逃回自己的家乡奥格瑞玛题目描述在艾泽拉斯,有n个城市。编号为1,2,3,…,n。城市之间有m条双向的公路,连接着两个城市,从某个城市到另一个城市,会遭到联盟的攻击,进而损失一定的血量。每次经过一个城市,都会被收取一定的过路费(包括起点和终点)。路上并没有收费站。假设1为暴风城,n为奥格瑞玛,而他的血量最多为b,出发时他的血量是满的。歪嘴哦不希望原创 2021-07-27 09:39:09 · 243 阅读 · 0 评论 -
最短路的三种解法
最短路的三种解法1.单源最短路迪杰斯特拉(nn) 和 Spfa(nm)一般使用迪杰斯特拉+堆优化,时间复杂度为(n+m)log2n,但是只用于不含有负权的边的求解最短步骤:1.建立边,dis数组无穷化,dis[start]=0;2.优先队列加入边,当pr.dis != dis[pr.pos] 时continue,因为已经有更小的路径连接当前点了,所有不需要了3.更新dis,并且push进去优先队列排序的关键代码bool operator < (const node &x)co原创 2021-07-27 09:26:46 · 633 阅读 · 0 评论