#3320. 异或最短路径
异或最短路径
异或最短路径
问题描述
给定一个有向图,包含N个顶点(编号从1到N)和M条边。第i条边从顶点A_i指向顶点B_i,边权为W_i。
要求找到从顶点1到顶点N的所有路径中,路径上边权异或和的最小值。
概念说明
- 路径(Walk):允许重复经过顶点和边的路径
- 异或操作:按位异或运算(相同为0,不同为1)
输入格式
第一行包含两个整数N和M,表示顶点数和边数。 接下来M行,每行三个整数A_i, B_i, W_i,描述一条有向边。
输出格式
如果不存在从1到N的路径,输出-1。 否则输出所有可能路径中边权异或和的最小值。
约束条件
- 2 ≤ N ≤ 1000
- 0 ≤ M ≤ 1000
- 1 ≤ A_i, B_i ≤ N
- 0 ≤ W_i < 2^10
- 所有输入均为整数
样例输入1
3 3
1 2 4
2 3 5
1 3 2
样例输出1
1
样例解释1
路径1→2→3的异或和为4 XOR 5 = 1,这是最小的可能值。
样例输入2
4 4
1 4 7
4 2 2
2 3 4
3 4 1
样例输出2
0
样例解释2
路径1→4→2→3→4的异或和为7 XOR 2 XOR 4 XOR 1 = 0。
样例输入3
999 4
1 2 9
2 1 8
1 2 7
1 1 6
样例输出3
-1
样例解释3
不存在从顶点1到顶点999的路径。