题目链接:Here

题意总结:给定的是无向图(树),要求把分成 \(n/2\) 对 让权值最小

思路:

看一下范围 在加上是一棵树 所以做法应该是dfs 复杂度为 \(\mathcal{O}(n)\)

直接去考虑贡献

设当前父节点为x 如果x的子树(包括x自己)的大小是个奇数 意味着什么呢

因为要两两配对,那么意味着这奇数个数中,一定有一个数要有外界配对

那么他就一定会经过x到x的父节点的那条边

所以 dfs 计算子树的大小 如果子树大小是个奇数 ,那么对答案有贡献 就要加上父节点往上连接的那一条边

AC 代码:246ms,1964kb

using ll    = long long;
const int N = 1e4 + 10;
ll ans;
vector<ll> cnt(N);
vector<pair<int, ll>> e[N];
void dfs(int u, int fa, ll len) {
for (auto it : e[u]) {
int v = it.first;
if (v == fa) continue;
dfs(v, u, it.second);
cnt[u] += cnt[v];
}
if (cnt[u] & 1) ans += len;
}
void solve() {
int n;
cin >> n;
ans = 0;
for (int i = 0; i <= n; ++i) e[i].clear();
for (int i = 0; i <= n; ++i) cnt[i] = 1;
for (int i = 1, u, v; i < n; ++i) {
ll len;
cin >> u >> v >> len;
e[u].push_back(make_pair(v, len));
e[v].push_back(make_pair(u, len));
}
dfs(1, 0, 0);
cout << ans << "\n";
}

另外附上学姐讲解:Here

【每日一题】8.Shortest Path (树上DFS)的更多相关文章

  1. 【每日一题】【树的dfs递归,返回多次,注意都遍历完后才最终返回】2022年1月6日-112. 路径总和

    给你二叉树的根节点 root 和一个表示目标和的整数 targetSum .判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum .如果存在,返回 tr ...

  2. Shortest Path(思维,dfs)

    Shortest Path  Accepts: 40  Submissions: 610  Time Limit: 4000/2000 MS (Java/Others)  Memory Limit: ...

  3. Codeforces Beta Round #3 A. Shortest path of the king 水题

    A. Shortest path of the king 题目连接: http://www.codeforces.com/contest/3/problem/A Description The kin ...

  4. [每日一题2020.06.08]洛谷P1605 DFS

    今天cf又杯具的只写出2题, 虽然AB题20分钟左右就搞定了, 但是CD写了2个小时也没写出来 D题我用到了DFS, 虽然必不正确, 但是我至少发现了一个问题, 那就是我连DFS都忘了, 于是怒找DF ...

  5. zoj 2760 How Many Shortest Path 最大流

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1760 Given a weighted directed graph ...

  6. 【ZOJ2760】How Many Shortest Path

    How Many Shortest Path 标签: 网络流 描述 Given a weighted directed graph, we define the shortest path as th ...

  7. Kuro and Walking Route CodeForces - 979C (树上DFS)

    Kuro is living in a country called Uberland, consisting of nn towns, numbered from 11to nn, and n−1n ...

  8. ZOJ 2760 - How Many Shortest Path - [spfa最短路][最大流建图]

    人老了就比较懒,故意挑了到看起来很和蔼的题目做,然后套个spfa和dinic的模板WA了5发,人老了,可能不适合这种刺激的竞技运动了…… 题目链接:http://acm.zju.edu.cn/onli ...

  9. CF938G Shortest Path Queries 和 CF576E Painting Edges

    这两道都用到了线段树分治和按秩合并可撤销并查集. Shortest Path Queries 给出一个连通带权无向图,边有边权,要求支持 q 个操作: x y d 在原图中加入一条 x 到 y 权值为 ...

  10. leetcode_1293. Shortest Path in a Grid with Obstacles Elimination_[dp动态规划]

    题目链接 Given a m * n grid, where each cell is either 0 (empty) or 1 (obstacle). In one step, you can m ...

随机推荐

  1. 用友U8与MES系统API接口对接案例分析

    企业数字化转型:轻易云数据集成平台助力 U8 ERP+MES 系统集成 为什么选择数字化转型? 领导层对企业资源规划(ERP)的深刻理解促使了数字化转型的启动. 采用精确的"N+5" ...

  2. Http的演进

    Http的演进 Http在1.1版本之前具有无状态的特点,每次请求都需要通过TCP三次握手四次挥手与服务器重新建立连接.比如某个客户端在短时间多次请求同一个资源,服务器并不能区别是否已经响应过用户请求 ...

  3. Netty内置的http报文解码流程

    netty解码 netty通过内置处理器HttpRequestDecoder和HttpObjectAggregator对Http请求报文进行解码之后,Netty会将Http请求封装成一个FullHtt ...

  4. [AGC038E] Gachapon

    Problem Statement Snuke found a random number generator. It generates an integer between $0$ and $N- ...

  5. drf实战和源码剖析----学习笔记1

    学自:bilibili武沛齐老师. 武老师讲课:清晰,连贯,实用,透彻,真乃名师! # 1. 什么是前后端分离 - 不分离,主要用于后台系统(CRUD)和用户量上的情况,开发起来代价小- 分离,面向用 ...

  6. NLP项目实战01--之电影评论分类

    介绍: 欢迎来到本篇文章!在这里,我们将探讨一个常见而重要的自然语言处理任务--文本分类.具体而言,我们将关注情感分析任务,即通过分析电影评论的情感来判断评论是正面的.负面的. 展示: 训练展示如下: ...

  7. ElasticSearch之虚拟内存

    查看当前Linux系统中vm.max_map_count变量的值,命令如下: sysctl vm.max_map_count 执行结果的样例,如下: vm.max_map_count = 65530 ...

  8. Codeforces 918(div4)

    Codeforces 918(div4) Problem - A - Codeforces #include<bits/stdc++.h> using namespace std; con ...

  9. [VMware]ESXI下硬盘的两种直通方式

    文章来自:https://rmbz.net/archives/vmware-esxi-passthrough 最近再搞ESXI,把原来的"黑群晖"改成ESXI:因为群晖里有数据,为 ...

  10. Lean大神编译的OpenWRT问题汇总

    1.初始密码为password,登录路由器后第一件事要修改默认密码 2.Lean大神编译的OpenWRT无法SSH.SFTP, 3.为了方便操作,一定要编译的时候安装TTYD,但是TTYD默认无法打开 ...