当前位置: 首页 > wzjs >正文

自己的电脑做网站会收录吗全栈网站开发者

自己的电脑做网站会收录吗,全栈网站开发者,网站建设 静态类,淘宝客网站搭建教程题目描述 给定一棵 n 个点的带权树,结点下标从 1 开始到 n。寻找树中找两个结点,求最长的异或路径。 异或路径指的是指两个结点之间唯一路径上的所有边权的异或。 输入格式 第一行一个整数 n,表示点数。 接下来 n−1 行,给出…

题目描述

给定一棵 n 个点的带权树,结点下标从 1 开始到 n。寻找树中找两个结点,求最长的异或路径。

异或路径指的是指两个结点之间唯一路径上的所有边权的异或。

输入格式

第一行一个整数 n,表示点数。

接下来 n−1 行,给出 u,v,w ,分别表示树上的 u 点和 v 点有连边,边的权值是 w。

输出格式

一行,一个整数表示答案。

输入输出样例

输入 #1复制

4
1 2 3
2 3 4
2 4 6

输出 #1复制

7

说明/提示

最长异或序列是 1,2,3,答案是 7=3⊕4。

数据范围

1≤n≤100000;0<u,v≤n;0≤w<231。

代码实现:

#include <iostream>
#include <vector>
#include <cstring>
using namespace std;

const int MAXN = 1e5 + 5;
const int MAXBIT = 30;

// 树的邻接表表示
vector< pair<int, int> > adj[MAXN];
int xor_val[MAXN]; // 存储每个节点到根的异或和

// Trie树节点结构
struct TrieNode {
    TrieNode* children[2];
    TrieNode() {
        children[0] = 0;  // 使用0替代nullptr
        children[1] = 0;  // 兼容C++98/03
    }
};

TrieNode* root;

// 插入数字到Trie树
void insert(int num) {
    TrieNode* curr = root;
    for (int i = MAXBIT; i >= 0; i--) {
        int bit = (num >> i) & 1;
        if (!curr->children[bit]) {
            curr->children[bit] = new TrieNode();
        }
        curr = curr->children[bit];
    }
}

// 查询与num异或的最大值
int query(int num) {
    TrieNode* curr = root;
    int res = 0;
    for (int i = MAXBIT; i >= 0; i--) {
        int bit = (num >> i) & 1;
        int desired = 1 - bit;
        if (curr->children[desired]) {
            res |= (1 << i);
            curr = curr->children[desired];
        } else {
            curr = curr->children[bit];
        }
    }
    return res;
}

// DFS计算每个节点的异或和
void dfs(int u, int parent) {
    for (int i = 0; i < adj[u].size(); i++) {
        int v = adj[u][i].first;
        int w = adj[u][i].second;
        if (v != parent) {
            xor_val[v] = xor_val[u] ^ w;
            dfs(v, u);
        }
    }
}


int main() {
    int n;
    cin >> n;
    for (int i = 0; i < n - 1; i++) {
        int u, v, w;
        cin >> u >> v >> w;
        // 使用 push_back 和 make_pair 替代 emplace_back
        adj[u].push_back(make_pair(v, w));
        adj[v].push_back(make_pair(u, w));
    }
    
    // 计算每个节点的异或和
    xor_val[1] = 0; // 根节点的异或和为0
    dfs(1, -1);
    
    // 构建Trie树并查询最大异或值
    root = new TrieNode();
    insert(xor_val[1]);
    int max_xor = 0;
    
    for (int i = 2; i <= n; i++) {
        max_xor = max(max_xor, query(xor_val[i]));
        insert(xor_val[i]);
    }
    
    cout << max_xor << endl;
    
    return 0;
}

http://www.dtcms.com/wzjs/589130.html

相关文章:

  • 重庆市官方网站企业网络规划实施方案
  • 金华网站开发大型企业网络设计方案
  • raid管理网站开发西安市建设网站
  • 旅游网页设计模板网站免费基础软件开发
  • 为什么上不了建设银行个人网站天天网站
  • 网站推广妙招怎么在自己的网站做淘宝客
  • 网站建设需要做哪些工作深圳建设工程网
  • 企业手机网站源码广州制作网站公司哪家好
  • 做网站不想用微软雅黑了如何创建网站挣钱
  • 怎么做国外游戏下载网站易购商城网站怎么做啊
  • 网站开发工程游戏设计师网站有哪些
  • 网站开发软件d企业微网站与手机微信号
  • 网站托管服务合同医院线上预约
  • wordpress网站域名地址有哪些网站可以免费发布广告
  • 怎么上传做 好的网站吗做租车行网站
  • 网站建设百度不通过wordpress ico不显示不出来
  • 检察院门户网站建设成效国内优秀网站设计
  • 网站安装系统怎么安装教程视频网站图片如何做超链接
  • 河北建设执业信息网官网wordpress 4.7优化精减
  • 深圳网站建设做一个公司网站要多少钱 上的视频直播下载
  • 桓台县城乡建设局网站vue做单页面网站
  • 国内购物网站哪个最好4435建站
  • 劳保手套网站建设在线购物网站的设计
  • 网站设计建设移动外贸网站建设
  • 益阳有专做网站的吗seo标题关键词怎么写
  • 没有备案的网站 推广在哪个网站可以免费做广告
  • 好的漂亮的淘宝客网站模板下载成立一个网站平台要多少钱
  • 企业运营管理系统搜索引擎优化的主题
  • 英文网站营销上海专业网站建设费
  • 创建个人网站多少钱软件研发和开发的区别