首页 > 其他分享 >必经之路

必经之路

时间:2023-06-05 21:45:43浏览次数:25  
标签:idx int res 必经之路 路径 ne add

必经之路

OJ:https://codefun2000.com/p/P1167

目录

题目大意

给一个n个结点的树,给一条边,要找到所有经过这条边的路径中最长路径的长度,规定每条边的路径长度为1。

题解

可以将树从要求的路径中一分为二,这样就成了两棵树,再分别以这两个结点为两个子树的根节点,找到所有以这两个结点为根的树中最长的路径,然后将两个路径长度相加,最后再加上一开始切割开的那个树枝即可。

可以画图看一下样例:

AC代码

#include <bits/stdc++.h>
using namespace std;

const int N = 100010;
int n;
int h[N], e[2 * N], ne[2 * N], idx;

void add(int a, int b) {
    e[idx] = b, ne[idx] = h[a], h[a] = idx++;
}

int dfs(int u, int fa) {
    int res = 0;
    for(int i = h[u]; i != -1; i = ne[i]) {
        int j = e[i];
        if(j == fa) continue;
        res = max(res, dfs(j, u) + 1);
    }
    return res;
}

int main() {
    cin >> n;
    memset(h, -1, sizeof h);
    for(int i = 0; i < n - 1; i++) {
        int a = i + 2;
        int b;
        cin >> b;
        add(a, b);
        add(b, a);
    }
    int x, y;
    cin >> x >> y;
    cout << dfs(y, x) + dfs(x, y) + 1 << '\n';
    return 0;
}

代码实现中要注意这里是双向边,所以边数要开2*N,否则会MLE。

标签:idx,int,res,必经之路,路径,ne,add
From: https://www.cnblogs.com/i-rong/p/17458995.html

相关文章

  • 从功能测试转型测试开发,薪资涨了20K,1000字讲述转型必经之路...
    身处职场之中,犹如逆水行舟不进则退,想要不被后浪拍死在沙滩上,就要不断学习新知识,接受新事物。要得到更好的发展,就要紧跟发展趋势,不断转型才能保持竞争力,在职场中占有一席之地。转型不是一件容易的事,涉及到转型、革新,就要突破现有的框架,必然会经历阵痛。我刚工作时就是一名月薪40......
  • 升级数智化底座是企业数智化转型的必经之路
    在AI技术普及、数字经济不断发展的大背景下,“企业数智化转型”的浪潮正席卷而来。企业构建新型能力体系、塑造数智化竞争力成为企业转型过程中的重中之重。企业希望通过搭建新的“数据平台”、“数据中台”,将数据集中化规范化。通过打造“数智化底座”,实现企业内部高效协同、推动商......
  • DTALK直播预约 | 数据资产管理:金融机构数据价值释放的必经之路
    当前,数据对金融机构业务和发展的重要性日益凸显,释放数据生产力已经成为金融机构进行全面数字化转型的核心,这就要求金融机构以数据资产为纲不断提升自身数据资产管理能力。本期DTALK我们邀请到雅拓信息解决方案专家尹晓中,为大家带来《数据资产管理——金融机构数据价值释放的必经......
  • 偶数科技 CEO 常雷:开源是国产软件的必经之路吗?
    未来十年将会是基础软件发展的黄金十年,也将是基础软件逐渐支撑起行业数字化转型的关键十年。与此同时,基础软件的研发周期长、研发难度大、应用广泛,是组织、企业、团队技术力......
  • 新手到站长的必经之路(三)—— 服务器上的文件结构
    前言从无序到有序,从无规律到有规律,我们一直在学习如何总结规律、加强认知,然后简化操作、提升效率。作为一个服务器上的服务,为了能达到最后的可以一键部署的效果,我们也需要......