旅行商问题
题意:
给定 n n n 个点, n − 1 n-1 n−1 条边,求从 1 1 1 开始每个点都访问一次的最小路径长度,不需要回到起点
思路:
显然给定了一树,我们每次访问一个分支时,如果还有其他分支没有访问,就必须回退然后继续遍历,模拟几个例子就可以发现,我们可以贪心,找到一个主链最长的遍历路线,可以访问分支节点时就访问并回退,按这个顺序最后的遍历总路长最小。
显然主链的只遍历了一遍,记忆化搜索最长主链即可
code:
#include<bits/stdc++.h>
#define endl '\n'
#define ll long long
#define ull unsigned

本文探讨了旅行商问题的一个特殊场景,即给定一棵树形结构,通过贪心策略寻找从特定节点出发访问所有节点的最短路径,并提供了一个C++实现方案。
最低0.47元/天 解锁文章
550

被折叠的 条评论
为什么被折叠?



