Time:2016.08.26
Author:xiaoyimi
转载注明出处谢谢


传送门
思路:
权值就是一条单路径(1->n)+所有环
dfs把它们求出来就可以了
复杂度O(n+m)O(n+m)
求出线性基,里面存储的就是各个环的xor值
后对每一位贪心就可以了
复杂度O(64log(n+m))O(64log(n+m))
代码:

#include<cstdio>
#include<iostream>
#include<cstring>
#define LL long long
using namespace std;
int n,m,cnt,tot;
int first[50005];
bool vis[50005];
LL data[1000005],lb[65],dis[50005],ans;
struct edge{int u,v,next;LL w;
}e[200005];
LL in()
{char ch=getchar();LL t=0;while (ch<'0'||ch>'9') ch=getchar();while (ch>='0'&&ch<='9') t=(t<<3)+(t<<1)+ch-48,ch=getchar();return t;
}
void add(LL z,int y,int x)
{e[++tot]=(edge){x,y,first[x],z};first[x]=tot;e[++tot]=(edge){y,x,first[y],z};first[y]=tot;
}
void dfs(int x)
{vis[x]=1;for (int i=first[x];i;i=e[i].next)if (!vis[e[i].v])dis[e[i].v]=dis[x]^e[i].w,dfs(e[i].v);elsedata[++cnt]=dis[x]^dis[e[i].v]^e[i].w,cnt-=(!data[cnt]);
}
main()
{n=in();m=in();for (int i=1;i<=m;++i)add(in(),in(),in());dfs(1);for (int i=1;i<=cnt;++i)for (int j=63;j>=0;--j)if (data[i]>>j&1)if (!lb[j]) {lb[j]=data[i];break;}elsedata[i]^=lb[j];ans=dis[n];for (int i=63;i>=0;--i)if (!(ans>>i&1)) ans^=lb[i];printf("%lld\n",ans);
}

【BZOJ2115】Xor,第一次的线性基相关推荐

  1. 牛客练习赛26 D xor序列 (线性基)

    链接:https://ac.nowcoder.com/acm/contest/180/D 来源:牛客网 xor序列 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他 ...

  2. P4151 [WC2011]最大XOR和路径(线性基)

    P4151 [WC2011]最大XOR和路径 对于求解最大异或和路径,首先边可以重复走,最终的结果一定是一条路径和许多环的异或和,因为路径和环之间的边会被走两次,不会被计算,所以我们可以通过dfs树求 ...

  3. bzoj 2115: [Wc2011] Xor(DFS+线性基)

    2115: [Wc2011] Xor Time Limit: 10 Sec  Memory Limit: 259 MB Submit: 3853  Solved: 1609 [Submit][Stat ...

  4. BZOJ 2844 albus就是要第一个出场(线性基)

    Description 已知一个长度为n的正整数序列A(下标从1开始), 令 S = { x | 1 <= x <= n }, S 的幂集2^S定义为S 所有子 集构成的集合.定义映射 f ...

  5. 小a与星际探索 线性基算法

    链接:https://ac.nowcoder.com/acm/contest/317/C 来源:牛客网 题目描述 小a正在玩一款星际探索游戏,小a需要驾驶着飞船从1号星球出发前往n号星球.其中每个星球 ...

  6. 【BZOJ2115】[Wc2011] Xor 高斯消元求线性基+DFS

    [BZOJ2115][Wc2011] Xor Description Input 第一行包含两个整数N和 M, 表示该无向图中点的数目与边的数目. 接下来M 行描述 M 条边,每行三个整数Si,Ti ...

  7. BZOJ2115:[WC2011] Xor(线性基)

    Description Input 第一行包含两个整数N和 M, 表示该无向图中点的数目与边的数目. 接下来M 行描述 M 条边,每行三个整数Si,Ti ,Di,表示 Si 与Ti之间存在 一条权值为 ...

  8. BZOJ2115 XOR(线性基)

    前置知识:线性基 题目描述 有一个边权为非负数的无向连通图,节点编号为 1 1 1到 n n n.求一条从 1 1 1到 n n n的路径,使得路径上经过的边的边权的异或和最大. 路径可以重复经过点和 ...

  9. HDU3949 XOR (线性基、查找第k小值)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 我们用高斯消元求出的a1,a2,-,ana_1,a_2, \dots,a_na1​,a2​,-,an​ ...

最新文章

  1. 如何让Table显示滚动条
  2. NOIP2018复赛 游记
  3. 支持向量机:Numerical Optimization
  4. const 和指针赋值
  5. shiro教程(1)-基于url权限管理
  6. cmake中的变量和命令的大小写
  7. 信息学奥赛一本通(2034:【例5.1】反序输出)
  8. flutter中使用InkWell给任意Widget添加点击事件
  9. CCS实例,网页栏目
  10. Sql Server 2005跨数据查询
  11. shell脚本之统计进程数(ubuntu实测可用)
  12. 240章节!“Python|爬虫|数据分析|机器学习|深度学习”中文版路线图视频(附链接)!...
  13. zotero中pdf-translate插件的使用
  14. 主题词是计算机自动提取,汉语关键词自动转换主题词方法的步骤
  15. Linux查看公网IP和私网(内网)IP的方法
  16. AUTOSAR Functional Safety
  17. gazebo可以另存为world
  18. 服务器端获取数据(一)
  19. 如何让文字变成语音?推荐三个免费把文字变成音频软件
  20. torch.logical_and()方法

热门文章

  1. 机器学习笔记(九)---- 集成学习(ensemble learning)【华为云技术分享】
  2. 野生前端的数据结构练习(9)冒泡排序,选择排序,插入排序
  3. 今日拷问:侬是什么垃圾!
  4. MATLAB中的清除,oop – 在MATLAB中清除类定义
  5. PHP+MySql+PDO小案例—文章管理系统
  6. psv应用java_PSV内容管理功能详细说明
  7. java process 重启_JAVA Process启动sh 后的问题
  8. Spark内核解析2
  9. Android 内存泄漏分析(完)
  10. 2021-10-13企业财务数据风险预警之随机森林