题解:abc395_e E - Flip Edge

封面

题意:

给定一个有向图,我们从顶点 11 出发,想要到达顶点 NN

有两种操作:

  1. 沿着有向边移动到下一个顶点,花费为 11
  2. 反转所有边的方向,花费为 XX

我们的目标是找到到达 NN 的最小总花费。

思路:

最短路,迪杰斯特拉。

只需要改建图就行了。

建图:

每个顶点 uu 在原图和反转图中被分别表示为两个节点 2×u2 \times u 为状态 00 原图和 2×u+12 \times u+1 为状态 11 反转图。

原图边:对于原边 uuvv,在状态 00 中添加边 2×u2 \times u2×v2 \times v 代价为 11

反转边:对于原边 uuvv,在状态 11 中添加边 2×v+12 \times v+12×u+12 \times u+1 代价为 11

状态切换边:每个顶点 uu 在两种状态间添加 2×u2 \times u2×u+12 \times u + 1 的双向边,代价为 XX

之后照常跑迪杰斯特拉就行了。

因为每个点都被分成了两个,所以最后输出要在两个终点中取最小值。

提交记录和代码