题目链接:https://vjudge.net/contest/146629#problem/L
题目描述:有n个星球,起点在第一个星球,求走遍全部星球的 到达时间和 最小值
解题过程:
记其中第 i 个星球到达第 j 个星球所需时间为 t[i][j]
进行floyd算法处理可得到第 i 个星球到达第 j 个星球所需的最小时间:
for (k = 1; k <= n; k++) for (i = 1; i <= n; i++) for (j = 1; j <= n; j++) t[i][j] = min(t[i][k] + t[k][j], t[i][j]);
接着用dfs对各个星球进行搜索即可
剪枝:
①当前时间 + 从该星球到所有未到达星球所需时间 < 所有未到达星球的时间限制
②(重要)当前到达时间和 + (n - 到达星球数) * 当前到达时间 < 已知最小结果
Floyd算法为什么把k放在最外层? ------ 知乎 https://www.zhihu.com/question/30955032