题意:
多组数据、
给你一颗树,
然后求一条最长异或路径,
异或路径长度定义为两点间简单路径上所有边权的异或和。
题解:
首先无根树转有根树再在树上跑一遍算出每个点到根的异或和。
然后两点间异或路径长度就是a[i]*a[j]。
因为lca之前那一段都被异或了两次搞没了。
然后求个线性基,然后随便搞搞就可以?可以WA了!
因为那么算哪是简单路径啊,或者说,那特喵的...
分类:
其他好文 时间:
2015-02-04 16:40:01
阅读次数:
228
#include #include #include #include #include #define N 100000+2using namespace std;//无根树转有根树算法/* 算法分析:所谓无根树,就是根节点任意的树。我们可以给它确定一个根节点。 我们可以假定认为某一个节点为根.....
分类:
编程语言 时间:
2015-02-03 20:58:09
阅读次数:
185
题目:
输入一个n个节点的无根树的各条边,并指定一个根节点,要求把该树转化为有根树,输出各个节点的父亲编号。
分析:分析在代码的注释中!
#include
#include
using namespace std;
const int MAXN = 1000;
int n, p[MAXN];
vector G[MAXN];
void dfs(int u, int fa...
分类:
其他好文 时间:
2014-06-28 06:56:57
阅读次数:
205