给定一条从 1 到 u 的简单路径,允许至多一次选择一个连续边段 [l,r] 把该段内每条边权 w 改为 w⊕x 后再求路径边权和的最小值。等价地看:沿着路径行进时,我们会有三种“状态”:
把“路径上一段用 w⊕x”的限制,转化为分层图最短路(Dijkstra):
你正在管理一个包含 n 台路由器和 m 条单向光纤链路的数据网络。路由器编号为 1 到 n。每条链路具有一个固定的非负整数传输延迟。网络中不存在自环(即没有从一台路由器直达自身的链路)。
你掌握一项名为“延迟反转”的技术:对于一条从路由器 1 出发到达任意路由器 u 的简单路径(路径上的路由器和链路均不重复),假设沿途依次经过 k 条链路,其原始延迟分别为 d1,d2,…,dk,你可以选择一段连续区间 [l,r](1≤l≤r≤k),对区间内的每一条链路,将其延迟临时替换为 di⊕X,其中 ⊕ 表示按位异或,X 是一个给定的非负整数常数。此操作最多执行一次,且只影响当前路径的计算,不会真实改变网络中的链路属性。
一条路径的代价定义为执行上述操作后所有链路的延迟之和。从路由器 1 到达路由器 i 的最小代价即为所有可能路径及操作选择下能够获得的最小总延迟。
你的任务是计算出从路由器 1 到其他所有路由器的最小代价。
约束条件:
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册