链接:http://mozhu.today/#/problem/show/1219

题意:给定n个点m条边有边权的无向图,求一个异或值最大的回路。

分析:其实就是将所有环的异或值找出来然后任选一些组成最大的异或值。从k个数中任选一些求最大的异或值在莫涛的高斯消元解XOR方程组里面讲得很清楚。

代码:

#include<map>
#include<set>
#include<cmath>
#include<queue>
#include<bitset>
#include<math.h>
#include<vector>
#include<string>
#include<stdio.h>
#include<cstring>
#include<iostream>
#include<algorithm>
#pragma comment(linker, "/STACK:102400000,102400000")
using namespace std;
const int N=50010;
const int mod=100000000;
const int MOD1=1000000007;
const int MOD2=1000000009;
const double EPS=0.00000001;
typedef long long ll;
const ll MOD=1000000007;
const int MAX=1000000010;
const ll INF=1ll<<55;
const double pi=acos(-1.0);
typedef double db;
typedef unsigned long long ull;
int tot,q[N],u[N],v[4*N],pre[4*N];
ll xo[N],d[4*N],w[4*N];
void add(int a,int b,ll c) {v[tot]=b;w[tot]=c;pre[tot]=u[a];u[a]=tot++;
}
void dfs(int x,int f,ll c) {if (q[x]) {d[++tot]=c^xo[x];return ;}q[x]=1;xo[x]=c;for (int i=u[x];i!=-1;i=pre[i])if (v[i]==f) continue ;else dfs(v[i],x,c^w[i]);
}
int main()
{int a,b,i,j,k,n,m,t,ca;ll c,ans;scanf("%d", &t);for (ca=1;ca<=t;ca++) {scanf("%d%d", &n, &m);tot=0;memset(u,-1,sizeof(u));for (i=1;i<=m;i++) {scanf("%d%d%lld", &a, &b, &c);add(a,b,c);add(b,a,c);}memset(q,0,sizeof(q));tot=0;ans=0;dfs(1,-1,0);for (i=60,k=1;i>=0;i--) {for (j=k;j<=tot;j++)if ((d[j]&(1ll<<i))!=0) break ;if (j==tot+1) continue ;if (j!=k) swap(d[k],d[j]);for (j=k+1;j<=tot;j++)if ((d[j]&(1ll<<i))!=0) d[j]^=d[k];k++;}for (i=1;i<k;i++) ans=max(ans,ans^d[i]);printf("Case #%d: %lld\n", ca, ans);}return 0;
}

UESTC OJ1219 Ba Gua Zhen相关推荐

  1. Ba Gua Zhen

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5544 学习链接:https://www.cnblogs.com/qscqesze/p/4902518. ...

  2. 2015南阳CCPC E - Ba Gua Zhen 高斯消元 xor最大

    Ba Gua Zhen Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 无 Description During the Three-Kingdom perio ...

  3. hdu5544 Ba Gua Zhen(高斯消元)

    思路:首先DFS把图上的所有环找出来,然后就是K个数里面任意选数使得异或和最大,高斯消元就好了 异或方程的高斯消元见 点击打开链接 #include<bits/stdc++.h> usin ...

  4. hdu 5544 Ba Gua Zhen

    link 因为在沈阳站的比赛中我们没有做出来H题,后来才知道是高斯消元.于是我先来补一下高斯消元的题目.先做了hdu XOR对线性基有了一定的了解,然后来做一下南阳ccpc的Ba Gua Zhen 分 ...

  5. hdu 5544 Ba Gua Zhen(线性基+dfs)

    题意: 一个无向图,每条边有值,找出无向图中所有的环的异或和,问这些值能异或出来的最大值. 解题思路: 去年的做的比赛里的题,今年才补上. 找环用dfs跑一遍图就可以找出来了,然后求最大的异或和,这是 ...

  6. HDU 5544 Ba Gua Zhen (dfs独立回路异或消元)

    这道题和BZOJ 2115 基本一样,容易一点,直接存个代码:这个代码要好看一点(好像并没有什么区别...) #include <bits/stdc++.h> #define LL lon ...

  7. [HDU] 5544 Ba Gua Zhen

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5544 题目大意:T组数据, 给一个n个点, m条边的无向连通图, 无自环, 无重边, 求最大XOR回 ...

  8. HDU 5544 Ba Gua Zhen ( 2015 CCPC 南阳 C、DFS+时间戳搜独立回路、线性基 )

    题目链接 题意 : 给出一副简单图.要你找出一个回路.使得其路径上边权的异或和最大 分析 : 类似的题有 BZOJ 2115 对于这种异或最长路的题目(走过的边可以重复走) 答案必定是由一条简单路径( ...

  9. centos7php自启动,CentOS7.X中设置nginx和php-fpm的开机自启动

    一.设置nginx的开机自启动方法 1.在/etc/init.d/目录下创建nginx文件 vi /etc/init.d/nginx 编写内容如下: #!/bin/sh # # nginx - thi ...

最新文章

  1. R语言中使用pkgbuild::find_rtools查看是否有Rtools、使用Sys.which函数查看make是否存在、如果没有则安装、使用writeLines函数绑定R和Rtools
  2. Mysql 生成不重复的随机数字
  3. [bug]超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。...
  4. 安装Zabbix过程中出现的问题集
  5. mysql join 组合索引_详解MySQL两表关联的连接表创建单列索引还是组合索引最优...
  6. 2021云栖大会丨首批阿里云计算巢认证合作伙伴获得授牌,阿里云与合作伙伴共筑云上生态
  7. USB口的红外条形码扫描器的另类使用
  8. 转行算法,90%的人还没开始就错在了这1步
  9. position小结
  10. 京东搜索排序在线学习的 Flink 优化实践
  11. SVN可视化管理工具
  12. mac抓包工具charles破解版安装及简单使用
  13. TYPE g_date_tbl_typ IS TABLE OF DATE INDEX BY VARCHAR2(1000);
  14. Rockchip | 固件分区排列
  15. Virtualbox加载虚拟机镜像
  16. HDOJ 6078-Wavel Sequence
  17. vue项目中使用@babel/plugin-proposal-optional-chaining的?.语法,防止字段没有报错
  18. JS实现简单的登录注册页签
  19. vue 子组件调用($emit)父组件方法后父组件方法如何回调子组件方法
  20. python自动生成统计表_python处理Excel自动统计表

热门文章

  1. 包子凑数-蓝桥杯真题 线性方程组求解(c++实现)
  2. MATLAB在app中扫描串口并在下拉菜单中显示
  3. 《统计学习导论:基于R应用》第2章课后习题参考答案
  4. Python 获取视频fps工具(附代码) | Python工具
  5. manjaro卸载docker
  6. 如何做好数据治理平台
  7. 《Activiti/Flowable 深入BPM工作流》-流程部署实现方式二
  8. 【STM32H7教程】第92章 STM32H7的FDCAN总线应用之双FDCAN实现(支持经典CAN)
  9. js实现简单聊天页面,图片随机名字随机
  10. 计算机好听歌曲,【跟风推荐】自己电脑里和手机里的好听歌曲