题目大意:给出一个无向有权图,找出一条从1到n的路径,使得路径上权值的异或和最大,路径可以重复走

Input

第一行包含两个整数N和 M, 表示该无向图中点的数目与边的数目。 接下来M 行描述 M 条边,每行三个整数Si,Ti ,Di,表示 Si 与Ti之间存在 一条权值为 Di的无向边。 图中可能有重边或自环。

Output

仅包含一个整数,表示最大的XOR和(十进制结果) 。

Sample Input

5 7
1 2 2
1 3 2
2 4 1
2 5 1
4 5 3
5 3 4
4 3 2

Sample Output

6

思路:有空补

#include<cstdio>

#include<string.h>

#include<iostream>

#include<algorithm>

#define maxn 400009

#define LL long long

using namespace std;

LL head[maxn],next[maxn],point[maxn],value[maxn];

LL now,cir[maxn],xo[maxn],h,n,m,bin[maxn];

bool visit[maxn];

void add(int x,int y,LL v){

next[++now]=head[x];head[x]=now;

point[now]=y;value[now]=v;

}

void dfs(int k)

{

visit[k]=1;

for(int i=head[k];i;i=next[i]){

int u=point[i];

if(visit[u]==1)cir[++h]=xo[u]^xo[k]^value[i];

else xo[u]=xo[k]^value[i],dfs(u);

}

}

int main()

{

LL x,y,v;cin>>n>>m;

for(int i=1;i<=m;i++){

cin>>x>>y>>v;

add(x,y,v);add(y,x,v);

}dfs(1);bin[1]=1;

for(int i=2;i<=61;i++)bin[i]=bin[i-1]<<1;

int now=0;

for(int i=61;i>=1;i--)

{

int idx=now+1;

while((cir[idx]&bin[i])==0 && idx<=h)idx++;

if(idx==h+1)continue;

now++;

swap(cir[idx],cir[now]);

for(int j=1;j<=h;j++)if((cir[j]&bin[i])!=0 && j!=now)cir[j]^=cir[now];

}

for(int i=1;i<=h;i++)if((xo[n]^cir[i])>xo[n])xo[n]=xo[n]^cir[i];

cout<<xo[n]<<endl;

return 0;

}

最新文章

  1. Vertica环境安装R-Lang包提示缺少libgfortran.so.1
  2. Asp.Net Core 项目实战之权限管理系统(6) 功能管理
  3. PHP数组函数: array_map()
  4. ios上架报错90080,90087,90209,90125 解决办法
  5. 纠结于搞.Net待遇不高的同学入...
  6. MinGW
  7. 二叉平衡查找树AvlTree(C实现)
  8. 组合数学 - 母函数的运用 + 模板 --- hdu : 2082
  9. 系统UITabBar属性设置
  10. Bonbo Git Server
  11. 理解C++中函数的返回
  12. .Net程序员学用Oracle系列(19):我知道的导出和导入
  13. 网络最大流算法—EK算法
  14. sublime实现一键代码格式化
  15. spreadJs 自动换行功能和自动增高行高
  16. Zephyr学习(五)线程和调度
  17. 2019-04-11-day030-网络编程并发
  18. C# Random循环生成随机数重复问题解决方案
  19. 微信小程序基于swiper组件的tab切换
  20. freemarker多个checkbox一个以上被选中示例

热门文章

  1. mount_cd9660:/dev/acd0: Input/output error
  2. 解决常见SVN冲突问题(转)
  3. 如何在腾讯云上安装Cloud Foundry
  4. nginx “403 Forbidden” 错误 解决方法
  5. 快学UiAutomator配置编辑环境
  6. ios之UIAlertView
  7. SVN 如何提交 SO 库文件
  8. python列表的增删改查用法
  9. 使用selenium和phantomJS浏览器获取网页内容的小演示
  10. 删除mysql主从