题意
给定一张无向图,求1->n的路径边权最大异或和。
分析
首先跑一颗任意生成树出来(DFS即可)
然后对于所有非树边,都形成一个环,我们叫它基本环。
通过异或的性质我们发现答案是选取一些基本环异或1~n在树上的路径异或和
所以我们把所有的基本环加入线性基,然后用1~n的路径去匹配贪心找最大值
基本环的寻找实际上结合在DFS中,用异或的性质可以算长度(不要去找LCA)
代码
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int maxn=5e4+105,maxm=1e5+105;