题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2115

题意:求图中路径1~n上最大边权 xor 和

思路:参见 blog http://blog.csdn.net/qwb492859377/article/details/52939589

代码:

 #include <iostream>
#include <stdio.h>
#include <string.h>
#define ll long long
using namespace std; const int MAXN = 5e5 + ;
const int inf = 0x3f3f3f3f; struct Edge {
ll val;
int v, nxt;
} E[MAXN * ]; int head[MAXN], id; void edge_init() {
id = ;
memset(head, -, sizeof(head));
} void edge_add(int u, int v, ll val) {
E[id].v = v;
E[id].val = val;
E[id].nxt = head[u];
head[u] = id++;
} int n, m, sz;
ll A[MAXN], P[], dis[MAXN]; void Guass_base(void) {
memset(P, , sizeof(P));
for(int i = ; i <= sz; i++) {
for(int j = ; j >= ; j--) {
if(!(A[i] >> j & )) continue;
if(!P[j]) {
P[j] = A[i]; break;
}
A[i] ^= P[j];
}
}
} void DFS(int u, ll s) {
if(dis[u] == -) dis[u] = s;
else {
A[++sz] = s ^ dis[u];
return;
}
for(int i = head[u]; ~i; i = E[i].nxt) {
int v = E[i].v;
DFS(v, s ^ E[i].val);
}
} int main(void) {
while(~scanf("%d%d", &n, &m)) {
sz = ;
edge_init();
memset(dis, -, sizeof(dis));
for(int i = ; i <= m; i++) {
int u, v;
ll val;
scanf("%d%d%lld", &u, &v, &val);
edge_add(u, v, val);
edge_add(v, u, val);
}
DFS(, );
Guass_base();
ll ans = dis[n];
for(int i = ; i >= ; i--) {
ans = max(ans, ans ^ P[i]);
}
printf("%lld\n", ans);
}
return ;
}

bzoj2115(线性基)的更多相关文章

  1. 【BZOJ2115】Xor(线性基)

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

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

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

  3. 【BZOJ-2115】Xor 线性基 + DFS

    2115: [Wc2011] Xor Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 2142  Solved: 893[Submit][Status] ...

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

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

  5. BZOJ2115 [Wc2011] Xor 【线性基】

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

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

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

  7. bzoj2115 [Wc2011] Xor——高斯消元 & 异或线性基

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2115 异或两次同一段路径的权值,就相当于没有走这段路径: 由此可以得到启发,对于不同的走法, ...

  8. 洛谷.3733.[HAOI2017]八纵八横(线性基 线段树分治 bitset)

    LOJ 洛谷 最基本的思路同BZOJ2115 Xor,将图中所有环的异或和插入线性基,求一下线性基中数的异或最大值. 用bitset优化一下,暴力的复杂度是\(O(\frac{qmL^2}{w})\) ...

  9. BZOJ2322 [BeiJing2011]梦想封印 【set + 线性基】

    题目链接 BZOJ2322 题解 鉴于BZOJ2115,要完成此题,就简单得多了 对图做一遍\(dfs\),形成\(dfs\)树,从根到每个点的路径形成一个权值,而每个返祖边形成一个环 我们从根出发去 ...

随机推荐

  1. java - 只输出不含中文标点符号的中文

    String a ="12dss显示,‘:()中文只"; StringBuffer b = new StringBuffer(); for(int i = 0;i<a.len ...

  2. [019] Android平台调用WebService详解

    http://blog.csdn.net/lyq8479/article/details/6428288/ http://www.cnblogs.com/gzggyy/archive/2011/06/ ...

  3. VS编译常见错误枚举01

    fatal error C1189: #error :  This file requires _WIN32_WINNT to be #defined at least to 0x0403. Valu ...

  4. python发送包含html、图片、附件和链接的邮件

    1.smtplib模块的使用 smtplib库用来发送邮件.需要用到的函数如下: 连接到SMTP服务器,参数为SMTP主机和端口: SMTP.connect([host[,port]]) 登录SMTP ...

  5. POJ1657

    1.题目链接地址 http://poj.org/problem?id=1657 2.源代码 #include<iostream> using namespace std; int main ...

  6. ParallaxEffect

    [ParallaxEffect] ParallaxEffect是一种用简单的2D贴图来模拟3D效果的简易方法.譬如一棵树,摄像机俯视时,当树远离摄像机时,树顶偏远,当树靠近,树顶偏近.苹果官方Adve ...

  7. iframe 模拟ajax文件上传and formdata ajax 文件上传

    对于文件上传 有好多种方式,一直想总结 文件上传的方法 今天就来写下 iframe  的文件上传的代码 本人语言表达能里有限,不多说了 直接上代码. 首先看 总体页面. 总共就三个文件. 实际上也就是 ...

  8. Qt入门-第一个Qt程序

    在安装完之后,迫不及待创建第一个Qt  demo

  9. python 正则表达式 练习题

    会用到的语法 正则字符 释义 举例 + 前面元素至少出现一次 ab+:ab.abbbb 等 * 前面元素出现0次或多次 ab*:a.ab.abb 等 ? 匹配前面的一次或0次 Ab?: A.Ab 等 ...

  10. Zynq 在Ubuntu上搭建编译环境

    http://bbs.elecfans.com/jishu_487981_1_1.html 以下操作均在root用户下完成1,下载交叉编译器在ubuntu里下载arm-2010.09-62-arm-x ...