BZOJ 2115 DFS+高斯消元
2017-01-03 16:07
232 查看
思路:
先搞出来所有的环的抑或值 随便求一条1~n的路径异或和
gauss消元找异或和最大 贪心取max即可
先搞出来所有的环的抑或值 随便求一条1~n的路径异或和
gauss消元找异或和最大 贪心取max即可
//By SiriusRen #include <cstdio> #include <cstring> #include <algorithm> using namespace std; #define N 200050 #define int long long int n,m,xx,yy,zz,w ,v ,next ,first ,tot,vis ,d ,stk ,tp; void Add(int x,int y,int z){w[tot]=z,v[tot]=y,next[tot]=first[x],first[x]=tot++;} void add(int x,int y,int z){Add(xx,yy,zz),Add(yy,xx,zz);} void dfs(int x){ vis[x]=1; for(int i=first[x];~i;i=next[i]){ if(!vis[v[i]])d[v[i]]=d[x]^w[i],dfs(v[i]); else if(d[v[i]]^d[x]^w[i])stk[++tp]=d[v[i]]^d[x]^w[i]; } } void gauss(){ for(int i=1ll<<62,flag=1,j;i;i>>=1){ for(j=flag;j<=tp;j++)if(stk[j]&i)break; if(j==tp+1)continue; swap(stk[flag],stk[j]); for(int k=1;k<=tp;k++){ if(k==flag)continue; if(stk[k]&i)stk[k]^=stk[flag]; } flag++; } } signed main(){ memset(first,-1,sizeof(first)); scanf("%lld%lld",&n,&m); for(int i=1;i<=m;i++){ scanf("%lld%lld%lld",&xx,&yy,&zz); add(xx,yy,zz); } dfs(1),gauss(); for(int i=1;i<=tp;i++)d =max(d ,d ^stk[i]); printf("%lld\n",d ); }
相关文章推荐
- BZOJ 2115 Wc2011 Xor DFS+高斯消元
- ACM学习历程—BZOJ 2115 Xor(dfs && 独立回路 && xor高斯消元)
- BZOJ 2115 DFS+高斯消元
- BZOJ 2115 Wc2011 Xor DFS+高斯消元
- bzoj 3811: 玛里苟斯 高斯消元&dfs
- BZOJ 2115 Xor(dfs&独立回路&异或消元)
- 【bzoj2466】【中山市选】【树】【高斯消元+dfs】
- [BZOJ2466][中山市选2009]树(高斯消元+dfs)
- 【dfs】【高斯消元】【异或方程组】bzoj1770 [Usaco2009 Nov]lights 燈 / bzoj2466 [中山市选2009]树
- 【bzoj2466】【caioj1113】树---树形DP/高斯消元+dfs
- BZOJ 2115|WC 2010|Xor|高斯消元
- bzoj 1770: [Usaco2009 Nov]lights 燈【高斯消元+dfs】
- BZOJ 2115 Xor 线性基介绍(高斯消元 xor线性基)
- bzoj 2115: [Wc2011] Xor xor高斯消元
- [高斯消元 线性基] BZOJ 2115 [Wc2011] Xor
- BZOJ 2115 [Wc2011] Xor 高斯消元
- BZOJ 2115: [Wc2011] Xor [高斯消元XOR 线性基 图]
- [bzoj 1013] [JSOI2008]球形空间产生器sphere:高斯消元
- bzoj1013球形空间产生器 高斯消元板子题
- [bzoj 3270] 博物馆:高斯消元+期望转移