Graph 针对特定问题优化dijkstra算法

Graph 针对特定问题优化dijkstra算法,graph,dijkstra,undirected-graph,Graph,Dijkstra,Undirected Graph,假设我们有一些细胞,你可以通过传送门传送到其他细胞,每个细胞都有一些“传送”时间,但也有一些守护者,当守护者在你所在的细胞中时,你必须等到他离开的那一刻,你才能传送到另一个细胞中。找出越狱的最短时间 总结如下: 我们有一个有成本的无向图,但也有一个限制,如果监护人在牢房里,你必须等到他离开,这样你才能传送 我所做的: 我做了通常的dijkstra算法,但在每一个正常成本下,我都会检查是否有这样的成本:“牢房里有监护人吗?”如果有,我会检查有多少秒,并将其添加到最短时间中。Dijkstra是用mi

假设我们有一些细胞,你可以通过传送门传送到其他细胞,每个细胞都有一些“传送”时间,但也有一些守护者,当守护者在你所在的细胞中时,你必须等到他离开的那一刻,你才能传送到另一个细胞中。找出越狱的最短时间

总结如下: 我们有一个有成本的无向图,但也有一个限制,如果监护人在牢房里,你必须等到他离开,这样你才能传送

我所做的:

我做了通常的dijkstra算法,但在每一个正常成本下,我都会检查是否有这样的成本:“牢房里有监护人吗?”如果有,我会检查有多少秒,并将其添加到最短时间中。Dijkstra是用min heap实现的,我使用基于给定时刻的二叉搜索树检查守护者。此外,可以从多个单元格中转义,我还使用二进制搜索树存储每个可以转义的单元格,以便搜索“所有最小值中的最小值”

你能优化这个吗? 我的意思是我使用二进制搜索树,最小堆,什么能花这么长时间?(对于具有5000个顶点和大约6000条边的图)