…老是想到最长路上

其实可以这样:把每个环的xor和都存起来,然后任选一条1到n的路径的xor和ans,答案就是这个ans在环的线性基上跑贪心。

为什么是对的……因为可以重边而且是无相连通的,并且对于一条路,走偶数次相当于没走,所以任意走一条主路都可以从歧路走到某个环上,然后从歧路返回,此时就得到了这个环的xor和并且没有xor上歧路的边权。

  1. #include<iostream>
  2. #include<cstdio>
  3. using namespace std;
  4. const int N=1000005;
  5. int n,m,h[N],cnt,tot;
  6. long long dis[N],c[N],b[N],ans;
  7. bool v[N];
  8. struct qwe
  9. {
  10. int ne,to;
  11. long long va;
  12. }e[N<<1];
  13. long long read()
  14. {
  15. long long r=0,f=1;
  16. char p=getchar();
  17. while(p>'9'||p<'0')
  18. {
  19. if(p=='-')
  20. f=-1;
  21. p=getchar();
  22. }
  23. while(p>='0'&&p<='9')
  24. {
  25. r=r*10+p-48;
  26. p=getchar();
  27. }
  28. return r*f;
  29. }
  30. void add(int u,int v,long long w)
  31. {
  32. cnt++;
  33. e[cnt].ne=h[u];
  34. e[cnt].to=v;
  35. e[cnt].va=w;
  36. h[u]=cnt;
  37. }
  38. void dfs(int u)
  39. {
  40. v[u]=1;
  41. for(int i=h[u];i;i=e[i].ne)
  42. {
  43. if(v[e[i].to])
  44. c[++tot]=dis[u]^dis[e[i].to]^e[i].va;
  45. else
  46. {
  47. dis[e[i].to]=dis[u]^e[i].va;
  48. dfs(e[i].to);
  49. }
  50. }
  51. }
  52. void charu(long long x)
  53. {
  54. for(int i=62;i>=0;i--)
  55. if(x>>i)
  56. {
  57. if(!b[i])
  58. {
  59. b[i]=x;
  60. return;
  61. }
  62. x^=b[i];
  63. }
  64. }
  65. int main()
  66. {
  67. n=read(),m=read();
  68. for(int i=1;i<=m;i++)
  69. {
  70. long long x=read(),y=read(),z=read();
  71. add(x,y,z);
  72. add(y,x,z);
  73. }
  74. dfs(1);
  75. ans=dis[n];
  76. for(int i=1;i<=tot;i++)
  77. charu(c[i]);
  78. for(int i=62;i>=0;i--)
  79. if((ans^b[i])>ans)
  80. ans=ans^b[i];
  81. printf("%lld\n",ans);
  82. return 0;
  83. }

bzoj 2115: [Wc2011] Xor【线性基+dfs】的更多相关文章

  1. BZOJ 2115: [Wc2011] Xor 线性基 dfs

    https://www.lydsy.com/JudgeOnline/problem.php?id=2115 每一条从1到n的道路都可以表示为一条从1到n的道路异或若干个环的异或值. 那么把全部的环丢到 ...

  2. BZOJ.2115.[WC2011]Xor(线性基)

    题目链接 \(Description\) 给定一张无向带边权图(存在自环和重边).求一条1->n的路径,使得路径经过边的权值的Xor和最大.可重复经过点/边,且边权和计算多次. \(Soluti ...

  3. BZOJ 2115 [Wc2011] Xor ——线性基

    [题目分析] 显然,一个路径走过两边是不需要计算的,所以我么找到一条1-n的路径,然后向该异或值不断异或简单环即可. 但是找出所有简单环是相当复杂的,我们只需要dfs一遍,找出所有的环路即可,因为所有 ...

  4. BZOJ 2115: [Wc2011] Xor DFS + 线性基

    2115: [Wc2011] Xor Time Limit: 10 Sec  Memory Limit: 259 MB Description Input 第一行包含两个整数N和 M, 表示该无向图中 ...

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

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

  6. BZOJ 2115: [Wc2011] Xor

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

  7. bzoj 2115: [Wc2011] Xor xor高斯消元

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

  8. bzoj 2115 [Wc2011] Xor 路径最大异或和 线性基

    题目链接 题意 给定一个 \(n(n\le 50000)\) 个点 \(m(m\le 100000)\) 条边的无向图,每条边上有一个权值.请你求一条从 \(1\)到\(n\)的路径,使得路径上的边的 ...

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

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

随机推荐

  1. APP后端处理视频的方案

    在当前的app应用中,到处都能看到视频的身影,例如,在社交类的app上,用户可以拍摄属于自己的小视频,并发布到相应得栏目,增加和好友们互动的机会. 后台常见的视频处理有以下几种: ·          ...

  2. SQL SERVER 2012 第三章 T-SQL 基本语句 having子句

    SELECT ManagerID AS Manager,COUNT(*) AS Reports FROM Human.Resources.Employee2 WHERE EmployeeID !=5 ...

  3. POJ 1797 【一种叫做最大生成树的很有趣的贪心】【也可以用dij的变形思想~】

    题意: 给一个无向图,找1到n所有的路中每条路最小权值的最大值! 屌丝一开始的思想是利用dij的变形~ 但是==屌丝忘记了更新dis数组~结果TLE无数次... 说正经的~dij的变形思想是这样的if ...

  4. pycharm查看代码注释的方法,代码编写日志及作者信息等

    竟然在边栏有个右键的快捷键.annotate可以查看代码书写日期及作者 鼠标悬停可以看到更加详细的时间等信息 原理应该是利用git blame

  5. c++多线程编程:常见面试题

    题目:子线程循环 10 次,接着主线程循环 100 次,接着又回到子线程循环 10 次,接着再回到主线程又循环 100 次,如此循环50次,试写出代码 子线程与主线程必有一个满足条件(flag == ...

  6. 去掉小程序textarea上的完成按钮栏

    小程序textarea上会自动多一个完成按钮,如下图所示,如果是mpVue,在textarea添加     :show-confirm-bar="false"     即可.  

  7. Citrix XenServer

    Citrix XenServer xenserver-test cpu特性码:77fafbff-bfebfbff-00000021-2c100800 xe snapshot-list xen还原快照 ...

  8. Linux中查看文件或者文件夹大小

    df -l 查看磁盘空间大小命令 df -hl  查看磁盘剩余空间 df -h  查看每个根路径的分区大小 du -sh  当前文件夹下所有文件大小(包括子文件大小 du -sm  [文件夹] 返回该 ...

  9. 从JVM的角度看JAVA代码--代码优化

    从JVM的角度看JAVA代码–代码优化 从JVM的角度看JAVA代码代码优化 片段一反复计算 片段二反复比較 在JVM载入优化为class文件,运行class文件时,会有JIT(Just-In-Tim ...

  10. jquery全选,取消全选

    近期项目又用到了这个全选和取消全选的操作. 曾经总是自己写纯JS.如今既然知道怎么写了.那怎样用JQ写得更简洁呢.这样也能学到新的东西.假设乎百度一下果然发现了好东东.感谢OSC的iuhoay. 代码 ...