tzoj6526: 最长异或和路径(字典树)

最长异或和路径

  • 描述
  • 输入
  • 输出
  • 样例输入
  • 思路
  • 总结


描述

给定一颗n <= 100 000个点的带权树,求树上最长的异或和路径。

输入

多组数据。每组数据的第一行包含一个整数n(1 <= n <= 100000),以下n -1行每行包含三个整数u(0 <= u < n),v(0 <= v < n) ,w(0 <= w <2 ^ 31),表示u和v之间的长度为w的边。

输出

对于每组数据输出结果。

样例输入

4
1 2 3
2 3 4
2 4 6

思路

1.vector存图
2.dfs
3.字典树

代码如下(示例):

#include
#define ll long long 
using namespace std;
int const N=111111,M=31*N;
typedef pair<int,int>PII;
vector<PII> vec[N];
int dist[N];
int vis[N];
int son[M][2],idx=0;
int n;
void add(int x)
{
   
    int p=0;
    for(int i

你可能感兴趣的:(算法,图论,深度优先)