题目传送门

sol:看了题意显然是最大生成树,但是任意两个点之间都有边,大概有n*n条边。用朴素的最小生成树算法显然不行。联想了一下树的直径还是不会。看了大佬的题解,懂了。。。

所以还是直接贴大佬博客链接好了:https://blog.csdn.net/yasola/article/details/72229734

  • 树的直径

    #include "bits/stdc++.h"
    using namespace std;
    typedef long long LL;
    typedef pair<int, int> PII;
    typedef pair<int, LL> PIL;
    const int MAXN = 1e5 + ;
    vector<PII> edge[MAXN];
    LL _max; int nn1, nn2;
    LL dis[MAXN];
    PIL get_diameter(int rt, int fa) {
    LL m1 = , m2 = ;
    int n1 = rt, n2 = rt;
    for (PII i : edge[rt]) {
    if (i.first == fa) continue;
    PIL p = get_diameter(i.first, rt);
    if (p.second + i.second > m1) {
    m2 = m1, n2 = n1;
    m1 = p.second + i.second;
    n1 = p.first;
    } else if (p.second + i.second > m2) {
    m2 = p.second + i.second;
    n2 = p.first;
    }
    }
    if (m1 + m2 > _max) {
    nn1 = n1, nn2 = n2;
    _max = m1 + m2;
    }
    return {n1, m1};
    }
    void dfs(int rt, int fa, LL mm) {
    dis[rt] = max(dis[rt], mm);
    for (PII i : edge[rt]) {
    if (i.first == fa) continue;
    dfs(i.first, rt, mm + i.second);
    }
    }
    int main() {
    int n;
    while (~scanf("%d", &n)) {
    memset(dis, -, sizeof(dis));
    for (int i = ; i <= n; i++) edge[i].clear();
    for (int i = ; i < n; i++) {
    int u, v, w;
    scanf("%d%d%d", &u, &v, &w);
    edge[u].push_back({v, w});
    edge[v].push_back({u, w});
    }
    _max = -;
    get_diameter(, -); // 求出树的直径,以及两个端点;
    dfs(nn1, -, ), dfs(nn2, -, );
    LL sum = ;
    for (int i = ; i <= n; i++) sum += dis[i];
    printf("%lld\n", sum - _max); // 将两个端点加入集合只用算一次直径,而上面的循环算了两次,所以减掉一个直径;
    }
    return ;
    }

牛客-Highway的更多相关文章

  1. 牛客网程序员面试金典:1.1确定字符互异(java实现)

    问题描述: 请实现一个算法,确定一个字符串的所有字符是否全都不同.这里我们要求不允许使用额外的存储结构. 给定一个string iniString,请返回一个bool值,True代表所有字符全都不同, ...

  2. 牛客网 --java问答题

    http://www.nowcoder.com/ 主要是自己什么都不怎么会.在这里可以学习很多的! 第一天看题自己回答,第二天看牛客网的答案! 1 什么是Java虚拟机?为什么Java被称作是“平台无 ...

  3. 【面试笔试算法】牛客网一站通Offer编程题2016.4.19

    牛客网一站通offer (一)字符串变形 1. 题目: 对于一个给定的字符串,我们需要在线性(也就是O(n))的时间里对它做一些变形.首先这个字符串中包含着一些空格,就像"Hello Wor ...

  4. 牛客网《BAT面试算法精品课》学习笔记

    目录 牛客网<BAT面试算法精品课>学习笔记 牛客网<BAT面试算法精品课>笔记一:排序 牛客网<BAT面试算法精品课>笔记二:字符串 牛客网<BAT面试算法 ...

  5. 牛客小白月赛13 小A买彩票 (记忆化搜索)

    链接:https://ac.nowcoder.com/acm/contest/549/C来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言52428 ...

  6. 牛客小白月赛13-J小A的数学题 (莫比乌斯反演)

    链接:https://ac.nowcoder.com/acm/contest/549/J来源:牛客网 题目描述 小A最近开始研究数论题了,这一次他随手写出来一个式子,∑ni=1∑mj=1gcd(i,j ...

  7. C++版 - HDUoj 2010 3阶的水仙花数 - 牛客网

    版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. C++版 - ...

  8. 【并查集缩点+tarjan无向图求桥】Where are you @牛客练习赛32 D

    目录 [并查集缩点+tarjan无向图求桥]Where are you @牛客练习赛32 D PROBLEM SOLUTION CODE [并查集缩点+tarjan无向图求桥]Where are yo ...

  9. 牛客OI周赛7-提高组 A 小睿睿的等式

    链接:https://ac.nowcoder.com/acm/contest/371/A来源:牛客网 小睿睿在游戏开始时有n根火柴棒,他想知道能摆成形如“A+B=n”的等式且使用的火柴棒数也恰好等于n ...

随机推荐

  1. RNA组研究困难

    RNA组研究的困难何在?如果开发新技术来解决这些困难,您最想解决的科学问题是什么? RNA研究的困难在于研究技术落后 (1)从信息流来说,我们需要直接测定RNA的序列,但是我们只能DNA测序仪间接测得 ...

  2. vue项目准备2

    单文件组件与路由 .vue结尾的文件都是单文件组件 路由就是根据网址的不同返回的页面不同 多页应用与单页应用 多页应用: 每次页面跳转,服务器都会返回一个html. 优点:首次展现页面快.搜索引擎排名 ...

  3. 关于 tf.image.crop_and_resize的使用

    https://blog.csdn.net/m0_38024332/article/details/81779544 关于 tf.image.crop_and_resize 的使用  最近在学习fas ...

  4. 动态类型识别&动态创建

    以下大部分内容摘自<windows程序设计 第2版> 王艳平 张铮 编著 动态类型识别:在程序运行过程中,辨别对象是否属于特定类的技术. 应用举例:函数辨别参数类型.需要针对对象的类编写特 ...

  5. c2000 N2A1 设置 KonNaD Settings & User Manual

    KonNaD Settings & User Manual c2000 N2A1  两个开关都推到左边,都设置成off

  6. TiKV 在京东云对象存储元数据管理的实践

    京东云对象存储是在 2016 年作为公有云对外公开的,主要特点是可靠.安全.海量.低成本,应用于包括一些常用的业务场景,比如京东内部的京东商城视频/图片云存储,面向京东云公有云外部的开发者的服务,和面 ...

  7. BZOJ4059[Cerc2012]Non-boring sequences(扫描线/分治)

    这题正解应该是扫描线,就是发现DP的区间在两个维度都为连续段,于是可以直接扫描线.但不幸的是,扫描线常数过大,无法通过本题. 考虑分治.对于分治区间[l,r],可以记录pre和nxt表示其前/后一次出 ...

  8. HDU-6514 Monitor(二维前缀和+差分)

    http://acm.hdu.edu.cn/showproblem.php?pid=6514 Problem Description Xiaoteng has a large area of land ...

  9. [Algo] 625. Longest subarray contains only 1s

    Given an array of integers that contains only 0s and 1s and a positive integer k, you can flip at mo ...

  10. F - Filter Gym - 100553F (bitset用法)

    题目链接:http://codeforces.com/gym/100553/attachments/download/2885/20142015-acmicpc-northeastern-europe ...