/ Vijos / 讨论 / /

SPFA需不需要开布尔型数组

看一个参考程序发现上面开了一个布尔型数组,说是什么记录是否入队,我自己在脑海中模拟了一下过程,发现数组没有用,到底有没有用啊?麻烦各位大牛指点一下

4 条评论

  • @ 2015-12-07 20:34:03

    当然要开,方便记录是否在队中,除非你是用STL的大婶

  • @ 2015-07-19 14:27:50

    SPFA
    A,将起点压队
    B,用待扩展节点去松弛连接的点,并出队
    1,被松弛的点,如果不在队中,压队。
    2,没有被松弛的点,无视。
    重复1-2,直到队列为空。
    注意:可能会多次进队的
    1,不能处理负权回路(某点N次进队)
    2,无向图负权边就是负权回路
    3,必须队空才结束(缺点)

  • @ 2015-07-18 22:12:46

    要的
    我几乎每个最短路都用spfa
    本人的编程风格把spfa压缩到7行

  • @ 2015-07-18 11:26:35

    判在不在队中。。在的话搜到只更新最小值不入队。每次搜到一个点就将其标记为不在队中。不然TLE到死(一直入队可想而知)。
    SPFA算法对稠密图复杂度O(nm),故只对稀疏图有较好的效率!建议也学一下堆+dijkstra

  • 1