博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Bzoj2110--Wc2011Xor
阅读量:4632 次
发布时间:2019-06-09

本文共 1752 字,大约阅读时间需要 5 分钟。

考虑如果我们已经到达了终点,那么从终点出发显然可以异或上图中任何地方一个环的异或值后再回到终点,那么我们显然可以在到达终点后根据环的异或值调整自己

所以我们可以先处理出环上的异或值,我的做法是先做一颗生成树,然后dfs确定每个点到根的异或值再加入非树边,这时每条非树边都对应一个环,其他复杂环都可以由这些环互相异或得到。处理下线性基在贪心选取。

有个小细节是树边上1到n的路径是必须选的,所以要基于这条路径贪心。

代码:

#include
#define INF 1000000000#define LNF 100000000000000ll#define eps 1e-12#define LL long longinline int _max(int a,int b) {
return a>b?a:b;}inline long double _fabs(long double a) {
return a>0?a:-a;}using namespace std;#define MAXN 50005#define MAXM 100005int n,m,x[MAXN],fr[MAXM],to[MAXM],tot;LL gs[MAXN],cs[MAXM],ans;bool f[MAXM];int fa(int v) { int k=v,b=v; while(x[v]!=v) v=x[v]; while(x[k]!=v) { x[k]=v;k=x[b];b=k; } return v;}int head[MAXN],cnt;struct Edge{ int to,next;LL w;}e[MAXM];void insert(int a,int b,LL c) { e[++cnt].next=head[a];head[a]=cnt;e[cnt].to=b;e[cnt].w=c; e[++cnt].next=head[b];head[b]=cnt;e[cnt].to=a;e[cnt].w=c;}LL xr[MAXN];bool vis[MAXN];void dfs(int v,LL k) { xr[v]=k;vis[v]=1; for(int i=head[v];i;i=e[i].next) if(!vis[e[i].to]) dfs(e[i].to,k^e[i].w);}LL num[72];void Gauss() { for(int i=1;i<=tot;i++) for(int j=62;j>=0;j--) if(gs[i]>>j&1) { if(num[j]) gs[i]^=num[j];else {num[j]=gs[i];break;} }}int main() { scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) x[i]=i; for(int a,b,i=1;i<=m;i++) { scanf("%d%d%lld",&fr[i],&to[i],&cs[i]); a=fa(fr[i]);b=fa(to[i]); if(a!=b) x[a]=b,insert(fr[i],to[i],cs[i]),f[i]=1; } dfs(n,0); for(int i=1;i<=m;i++) if(!f[i]) gs[++tot]=xr[fr[i]]^xr[to[i]]^cs[i]; Gauss(); ans=xr[1]; for(int i=62;i>=0;i--) if((ans^num[i])>ans) ans=ans^num[i]; cout<
<

 

转载于:https://www.cnblogs.com/ihopenot/p/5952910.html

你可能感兴趣的文章
CentOS 6.2 安装kdbg
查看>>
libevent源码分析:event_assign、event_new
查看>>
a new start in cnblogs
查看>>
luogu 2216 理想的正方形 单调队列(其实没有DP)
查看>>
在控制台应用程序下,创建窗口,避开WinMain函数入口
查看>>
最大连续子数组和--dp
查看>>
英文词频统计预备,组合数据类型练习
查看>>
缓存整个页面
查看>>
PHP范例注册审核
查看>>
jquery知识简单运用
查看>>
KMP算法练习
查看>>
git
查看>>
特殊变量的处理(一)onehot&dummy
查看>>
打开文件对话框 保存一个txt文件 比较简单用的时候省的搜索了
查看>>
Linux下MySQL5.7.18二进制包安装(无默认配置文件my_default.cnf)
查看>>
mssql手工注入心的
查看>>
文件重命名的几种写法
查看>>
Nginx配置文件及模块解析
查看>>
redis主从配置
查看>>
终端clear清屏的实现
查看>>