1)如何建图,暴力建图的话,最坏的情况下10^10 不能接受,但是可以把我们分析一下点数最多只有26 * 26 = 676种,
如果存在环的话那么环上的任意一点都是前驱也是后继,把每个单词看成一个边,两边看成点就可以完美的转化。
2)01分数规划
3)递归spfa
注意:有时候请求负环的时候SPFA会被卡掉这个时候可以把SPFA的队列换成栈,也可以用dfs版的spfa(最快),但是求一般的最短路中后两种算法超慢,因为假设一个点被更新了之后会立刻出来更新其他的,如果这个点要被更新多次,那么它的子节点也会被更新多次。而队列版SPFA就有一个不错优化,因为他一旦进队不会立刻出来而是可能被其他点更新多次取到的最小值来更新的其他点,效果实测更优。
佬,这里的点的个数为什么直接就当作1处理了呀?
请问有代码吗?我把AC的code里的queue直接换成了stack,但是只过了第一个数据,然后TLE了,还请大佬指教。
Y总之后一节课有用stack写,但是是array模拟stack,我的过不了应该是stl的效率不够高。
同问。但是我调了调玄学优化,发现是入栈次数变得多了,并不是效率不够高。
个人理解换stack其实是大概率有环的情况下才会去换,也就是queue被卡的时候可以考虑,但是多数情况下queue的效率是要比stack好的,因为对于stack来说只有在有环的时候它的的性质(队尾出)才有优势。