BZOJ 2115 DFS+高斯消元

原创 2017年01月03日 16:07:24

思路:
先搞出来所有的环的抑或值 随便求一条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[N],v[N],next[N],first[N],tot,vis[N],d[N],stk[N],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[n]=max(d[n],d[n]^stk[i]);
    printf("%lld\n",d[n]);
}

这里写图片描述

版权声明:本文由SiriusRen原创,但可以转载,因为我们是兄弟 爬虫能爬到这句话么哈哈哈

相关文章推荐

BZOJ 2115 Wc2011 Xor DFS+高斯消元

题目大意:给定一个无向图,每条边上有边权,求一条1到n的路径,使路径上权值异或和最大 首先一条路径的异或和可以化为一条1到n的简单路径和一些简单环的异或和 我们首先DFS求出任意一条1到n的简单路径以...
  • PoPoQQQ
  • PoPoQQQ
  • 2014年10月05日 17:00
  • 1647

【高斯消元】【图论】[BZOJ2115]Xor高斯消元

题目描述题目解析首先如果直接思考那么我们不容易得到答案,那么我们换一种思路,我们先解决这个问题的弱化版本,我们考虑在无向图GG中知道SS和TT如何去寻找最大的环路首先我们根据其中一个点(这里选择SS)...

bzoj 3811: 玛里苟斯 高斯消元&dfs

这道题目还要根据k来分类讨论。。。。        当k=1的时候,按位求贡献,然后发现答案就是所有数or起来再/2。        当k=2的时候,就真的要按位来了。。按照(x1+x2+...+xn...

BZOJ 2115 [Wc2011] Xor 高斯消元

BZOJ 2115 [Wc2011] Xor 高斯消元
  • wzq_QwQ
  • wzq_QwQ
  • 2015年07月18日 08:29
  • 1145

BZOJ 2115|WC 2010|Xor|高斯消元

无向联通图上的路径使其边权Xor和最大。考虑一个路径,发现其由树边和非树边组成(SAM证明线性的时候也用到了这个) 树边可以很容易地xor出来啦,非树边呢? 由于非树边的两端点总在树上,因此1条非...

【HDU5544 2015CCPC 南阳国赛E】【树上dfs找本质不同环 高斯消元 时间戳优化】Ba Gua Zhen 连通图上最大异或环

Ba Gua Zhen Time Limit: 6000/4000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) Tota...

POJ 3185 高斯消元+DFS枚举自由变量

题意:奶牛有20只碗摆成一排,用鼻子顶某只碗的话,包括左右两只在内的一共三只碗会反向,现在给出碗的初始状态,问至少要用鼻子顶多少次才能使所有碗都朝上。 #include #include #incl...
  • Tsaid
  • Tsaid
  • 2012年03月08日 22:31
  • 1740

poj1681 高斯消元+dfs枚举

wa  N多次后,终于把高斯消元的模板给弄出来了,并且精简了许多。 用dfs枚举变元比二进制枚举变元简单多了。 (也终于明白 变元代表只得解的个数。) 上模板。 #include #include...

【高斯消元】BZOJ1013(JSOI2008)[球形空间产生器sphere]题解

BZOJ1013题解。

[高斯消元 概率 KMP] BZOJ 4820 [Sdoi2017]硬币游戏

一个直观的想法 是建AC自动机 然后消元 但是这样变量个数是O(nm)O(nm) 然后我就不会做了 概率题都好妙啊 一个精妙的设计是再定义一个状态N 表示当前串不包含任何人的概率 举个例子 来自...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:BZOJ 2115 DFS+高斯消元
举报原因:
原因补充:

(最多只允许输入30个字)