解题思路
给定一条从 1 到 u 的简单路径,允许至多一次选择一个连续边段 [l,r] 把该段内每条边权 w 改为 w⊕x 后再求路径边权和的最小值。等价地看:沿着路径行进时,我们会有三种“状态”:
- 状态 0:尚未开始异或段(之后的某一段可开始,也可以永不开始);
- 状态 1:正处于异或段中(本段内边权以 w⊕x 计);
- 状态 2:已结束异或段(之后再以原权 w 行走,不可再开启)。
把“路径上一段用 w⊕x”的限制,转化为分层图最短路(Dijkstra):
题目内容
给定一个有 n 个结点以及 m 条的带权有向图 G ,以及一个整数 x 。G 中保证没有自环。
米小游初始在结点 1。对于一条从 1 到 u 的长度k 为的 简单路径,设其经过的 点 为p1,p2,...,pk+1,其中 p1=1,pk+1=u ,且对于所有 1≤i≤k,G 中都存在一条 pi 从到 pi+1 的有向边。这条路径的代价计算方式如下:
- 米小游可以选择两个整数 l,r ,满足 1≤l≤r≤k 。接下来,对于所有的 l≤i≤r,米小游将到这条有向边的边权异或上 x 。也就是说,如果原本这条边的边权为 w ,米小游会将其修改为 w⊕x ,其中 ⊕ 代表按位异或。本操作最多执行一次。