解题思路
这是一个带有状态的最短路问题。可以将每个节点 i 和当前持有的通道类型组合成一个状态 (i,type),其中 type∈{0,1}(内部用 0 表示题目中的 1 类型,1 表示 2 类型)。使用变种的 Dijkstra 算法 求解:
-
定义 dist[i][0] 表示从起点 1 出发,到达节点 i 且当前通道类型为 1 的最短时间。
dist[i][1] 表示到达节点 i 且当前类型为 2 的最短时间。
-
初始状态:从节点 1 出发,可以任意选择一种通道类型且无切换延迟,因此
dist[1][0]=dist[1][1]=0 ,将两个状态加入优先队列。