AcWing144 ruta de valor XOR más larga (Trie)

La simple idea codiciosa de Trie, siempre que la ruta XOR sea el valor XOR de las dos rutas al nodo raíz, entonces el árbol Trie es codicioso

#include <iostream> 
#include <cstring> 
#include <cstdio> 
#include <map> 
#include <algorithm> 
#include <queue> 
#include < set >
 #define ull unsigned long long
 utilizando  namespace std; 
typedef largo  largo ll; 
typedef par < int , int > pll; 
typedef par < int , par < int , int >> plll;
const  int N = 3e5 + 10 ;
const  int inf = 0x3f3f3f3f ;
int tr [ 3000001 ] [ 2 ];
int h [N], ne [N], e [N], w [N], idx;
int cnt;
int sum [N];
void add ( int a, int b, int c) { 
    e [idx] = b, ne [idx] = h [a], w [idx] = c, h [a] = idx ++ ; 
} 
Void DFS ( int u, int res, int FA) {
     int i; 
    suma [u] = res;
    para (i = h [u]; i! = - 1 ; i =ne [i]) {
         int j = e [i];
        si (j == fa)
         continúa ;
        int c = w [i]; 
        dfs (j, res ^ c, u); 
    } 
} 
void insert ( int x) {
     int i;
    int cur = 0 ;
    para (i = 30 ; i> = 0 ; i-- ) {
         int num = x >> i & 1 ;
        if (tr [cur] [num] == 0 ) 
        tr [cur] [num] = ++ cnt;
        cur = tr [cur] [num]; 
    } 
} 
int search ( int x) {
     int cur = 0 ;
    int i;
    int res = 0 ;
    para (i = 30 ; i> = 0 ; i-- ) {
         int num = x >> i & 1 ;
        if (tr [cur] [num ^ 1 ]) { 
            res + = 1 << i; 
            cur = tr [cur] [num ^ 1 ]; 
        } 
        más {
            cur  =tr [cur] [num]; 
        } 
    } 
    return res; 
} 
int main () { 
    memset (h, - 1 , tamaño de h);
    int n; 
    cin >> n;
    int i;
    para (i = 1 ; i <n; i ++ ) {
         int u, v, c; 
        scanf ( " % d% d% d " , & u, & v, & c); 
        agregar (u, v, c); 
        agregar (v, u, c); 
    } 
    dfs ( 1 , 0 , - 1 );
    para (i = 0 ; i <n; i ++ ) { 
        insert (sum [i]); 
    } 
    int res = 0 ;
    para (i = 0 ; i <n; i ++ ) { 
        res = max (res, search (sum [i])); 
    } 
    cout << res << endl; 
}
Ver código

 

Supongo que te gusta

Origin www.cnblogs.com/ctyakwf/p/12676772.html
Recomendado
Clasificación