首页 > 其他分享 >牛客题解 水图

牛客题解 水图

时间:2022-09-26 13:23:34浏览次数:77  
标签:水图 distance 牛客 int 题解 long vis longest

链接:https://ac.nowcoder.com/acm/problem/18947
来源:牛客网

题解

作者 岛田小雅

由题目中“ \(n\) 个点 \(n-1\) 条边的无向连通图”可得出这是一棵

考虑使用树形DP。对节点 \(i\),维护从点 \(i\) 出发经过它的子树每个点至少一次并返回,最少需要走多少路。

因为最后可以停在任意一点,我们可以让小w最后走最长的那条路,然后停在最长那条路的末端。也就是说,最后的答案是节点 \(x\) 存储的距离最小值减去最长路的长度。

AC 代码中出现的 \(\texttt{auto []}\) 是结构化绑定声明

AC 代码

作者 岛田小雅
#include <bits/stdc++.h>
using namespace std;

const int N = 5e4+2;
int n, x;
vector<pair<int,int>> e[N];
int vis[N];
long long save[N]; // 对每个结点存储经过它的子树每个点至少一次并返回的距离最小值
long long longest_distance;

void dfs(int u, long long tmp_distance)
{
    longest_distance = max(longest_distance,tmp_distance);
    if(u!=x && e[u].size()==1) return; // 不是根且入度为1,说明是叶子,没有子树,直接返回
    for(auto [v,w]:e[u])
    {
        if(!vis[v])
        {
            vis[v] = true;
            dfs(v,tmp_distance+w);
            vis[v] = false;
            save[u] += save[v]+2*w;
        }
    }
}


int main()
{
    ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    cin >> n >> x;
    for(int i = 1; i < n; i++)
    {
        int u, v, w;
        cin >> u >> v >> w;
        e[u].emplace_back(v,w);
        e[v].emplace_back(u,w);
    }
    vis[x] = true;
    dfs(x,0);
    vis[x] = false;
    cout << save[x]-longest_distance << '\n';
    return 0;
}

标签:水图,distance,牛客,int,题解,long,vis,longest
From: https://www.cnblogs.com/CasseShimada/p/16730535.html

相关文章

  • Xshell无法连接22端口问题解决办法汇总
    Xshell软件在进行远程连接过程中,会出现端口连接报错的问题,提示:“该IP地址的22端口连接失败”,这是怎么回事?今天小编就xshell软件无法连接22端口的问题,整理相关情形(ubuntu系......
  • iOS 开发者帐号 App转让/转移 及转移后的证书问题解答(多图慎入)
    原文:简书 帐号转移在此,将原帐号称为A帐号,新的帐号称为B帐号。现在需要将A帐号中的App转让到B帐号中。*登录A帐号,找到App如下图: 1.A账号APP点转让.jp......
  • [hystrix] hystrix-dashboard 关于 Unable to connect to Command Metric Stream 的问
    问题在hystrix-dashboard界面中出现以下错误解决方法高版本(具体哪些版本之后我不知道,加上去试试)springcloud需要加以下配置(在被监控一端):@Configurationpubli......
  • 性能测试监控nmon安装和问题解决
      一.安装nmon1.确认linux的版本,选择合适的安装包uname-a查看操作系统信息lsb_release-a或者cat/etc/redhat-release查看linux发行版本2.下载安装nmon下载:由......
  • MySQL数据库安装保姆级教程及1045错误和2058问题解决
    使用Mysql的zip压缩包解压版,下载之后需进行一定的配置,才能使用它。下面对Mysql压缩包版的安装方法进行详细的描述,如有疑问或错误,望及时反馈。首先,mysql的官方下载地址......
  • 尚品汇前台管理项目:未登录情况下访问购物车,登录账号后页面不更新问题解决方案
    问题描述:如果用户未登录状态下通过首页访问【我的购物车】,点击【结算】,跳转登录页面后,即使输入正确的账号和密码获取到用户信息后,地址栏路径和页面也不会更新,从【我的订......
  • 学习过程中的相关问题解决
    解决方法:这怎么说呢?误打误撞了属于是,在某个文件中定义为然后,在另一个.java文件中就不要出现已经用到过的名字,不然就会报错,注意一下哈!解决方法:大概率是form表单中的a......
  • 牛客网-SQL专项训练23
    ①假设创建新用户nkw,现在想对于任何IP的连接,仅拥有user数据库里面的select和insert权限,则列表语句中能够实现这一要求的语句是(B) 解析:考察知识点-数据库授权命令:GRANT<......
  • 「题解」异或
    披着位运算皮的莫队(114514)原题出处:没找到原题链接:题库暂未公开「我的做题历程」:step1:观察题面题面如下图。图1 题面 看到这个「区间询问」,我的脑子里闪过......
  • 【题解】DZY Loves Math V
    题目描述给你\(n\)个整数\(a_i\)叫你求:\[\sum_{i_1|a_1}\sum_{i_2|a_2}\sum_{i_3|a_3}\cdots\sum_{i_n|a_n}\varphi(i_1i_2i_3\cdotsi_n)\]简要思路发现对于欧拉......