1.SPFA中,一定要注意是只要是push,就伴随这st[] = true;只要是出队,就伴随着st[] = false; 再for循环中,记得判断一下j是否本来就已经进入队列中了.这里的st[]应该理解为是否再队列中.
2.堆优化dijkstra,这里的st[]应该理解为是否已经被选定了;一开始初始话的时候不需要将st[1]设置为true,因为这一轮还没有开始,等到在堆中选定一个点之后,再把他们的st设置为true; 一定要记得选定一个点进行更新的时候,不能直接将所有的j都更新,因为这个j可能已经st被设置为true了,你在更新已经没有意义了.
3.朴素版dijkstra,这里的st[]也应该理解成是选定点的意思;一开始也是不需要将st[1]设置为true,因为总共需要进行n - 1轮, 所以在每一轮中选定一个d[]最小的进行处理,并且把它st[]设置为true; 同样的,更新到其他点的距离的时候,已经被选定的st[]为true的点就不需要进行更新了.