【20181103T2】图【结论+bfs最短路】

一眼最短路

……感觉是个结论啊

建超级源汇?

什么鬼

合并ab和cd?

不一样的吗

开始想的至少有一条路径是最短路

然后发现不对:

开始对着这个图瞎想

从B开始找A的最短路,然后把到B小于等于的边赋成0,再求一遍C到D最短路加起来

刷刷刷写完了,发现过不了样例

样例好像要从A找B……

乱了乱了

之所以不好做,主要是路径有交集

那交集有什么特点呢?

会不会最多只有一段?

然后发现是对的,如果是从某个地方出去,绕一圈再回来,肯定没有之前优

$N leq 3000 …… $那我们可以枚举交集的起点和终点,把五段距离加起来就好了

当然还有无交集的情况

由于边权为1,所以可以bfs N次求出任意两点的最短路

然后就枚举

注意是双向边,可以a连i,b连j,c连j,d连i

复杂度(O(N^2))

(2^m)对了10min没有问题

另:ldx神仙声称存在一种最优方案使得两条路的交集一定在其中一对点的最短路上

该算法可以AC,还暴踩标算,并且拍了一中午没有问题

目前正在研究当中

代码

原文地址:https://www.cnblogs.com/lstoi/p/9900597.html