几乎爆了一页的零之后,终于过了呜呜呜。
本来以为是水题,结果坑死我了,调了好几个小时。
下面是我错的几个地方,警示后人:
- INF开的不够大,建议直接1e18
- 不要用INF去
memset,平时INF=0x3f3f3f3f的话倒是无所谓,但是如果用1e18的话去 memset 反而会很小。(具体原因可以搜索 memset 原理)
- 开long long一定要开全,不能漏掉,比如dist和mf什么的都别忘,或者直接
#define int long long
- 拆点的逻辑要理清,分清楚是u+n到v还是u到v+n
- 数组一定要开够!拆点后算上反向边一共大约为2(m+n)条,点数则是二倍
- 如果使用邻接矩阵的话,有重边,记得取最小
- 还有就是重新建图的逻辑,我之前用邻接表存图然后跑spfa+dfs去链式前向星结果一直wa,改成建链式前向星跑spfa然后清空head遍历重建后就过了,至今不明原因