[ABC271E] Subsequence Path Solution

更好的阅读体验戳此进入

题面

给定 n 个点 m 条边有边权无自环的无向图,给定边集序列 Ek,求边集序列的子序列路径使得能按序从 1n 且路径长度最小,输出最小值,无解输出 -1

Solution

最开始的思路是把边集下放然后每个点挂多个 pair < ll, int > 表示到这个点的所有可能的权值与其对应的最小的序列终止位置,然后用类似二维偏序的思路转移,但是不确定这个思路假没假以及复杂度是否正确,不过细想一下就会发现这题实际上特别水。

不难发现我们要找的是边的子序列,也就是其是有顺序的,那么我们直接按照边序列顺序跑的话显然是无后效性的,所以我们可以按照最短路的思想,考虑记录到每个点的 dis,然后按序列顺序遍历边,用其起始点的 dis 加上边权去更新该点的 dis,注意到这里我们可以这么做的原因是如果要求前面的边,一定不会在其之前先走后面的边,这也就是我们刚才提到的无后效性,这样最后 disn 就是答案了。

Code

UPD

update-2023_02_09 初稿。

update-2023_02_09 审核说的问题是 “句子末尾应加句末句号(全角)”,我实在是没找到哪里缺句号了,只能在 “初稿” 这个非句子的词语后加了个句号。