题目解析
本题需要我们根据各个变量 AiA_iAi 和 A1A_1A1 的关系来推出 AiA_iAi 的值。
我们可以根据给出的 MMM 条信息来构建一个无向图:
对于 Ai⊕Aj=kA_i \oplus A_j = kAi ⊕Aj =k,我们可以构建一条 (i,j)(i, j)(i,j) 的边权为 kkk 的边。
最后使用 DFS/BFS\tt{DFS}/\tt{BFS}DFS/BFS 从 111 开始遍历整个图,对于遍历到的每个点 uuu 其所有的邻接点 viv_ivi ,那么 Avi=Au⊕wu→viA_{v_i} = A_u \oplus w_{u \rightarrow v_i}Avi =Au ⊕wu→vi 。
遍历结束以后没有遍历到的点,说明无法判断其和 A1A_1A1 的关系,输出 −1-1−1 即可。
AC代码
C++ AC代码:
Python AC代码:
复杂度分析
建图的时间复杂度为 O(M)\mathrm{O}(M)O(M),搜索遍历图的复杂度为 O(N+M)\mathrm{O}(N + M)O(N+M)。总的时间复杂度为 O(N+M)\mathrm{O}(N + M)O(N+M)。