07 2019 档案

摘要:BFS/DFS做法 任取树的一个点,从该点开始跑dfs/bfs,找到距离最远的一个点x,再从x开始跑bfs/dfs,找到另一个最远的点y,则x到y的距离为树的直径.第一次搜索找到的点x必定为直径的一端,则从该点开始再找最远的点就能找出直径的另一端的. 阅读全文
posted @ 2019-07-28 15:01 VBL 阅读(91) 评论(0) 推荐(0)
摘要:问题 给一个图,有k次机会可以通过一条边而不计算其权值,问从起点到终点权值和最少为多少? 思路 核心思路:动态规划.把图中的每一个点拆成k+1种状态,分别是从0....k,表示用了多少次不计边权的机会,然后从起点开始跑最短路.设dp[i][j]为起点到i点用了j次机会的最短距离,当更新到dp[i][ 阅读全文
posted @ 2019-07-28 14:03 VBL 阅读(157) 评论(0) 推荐(0)
摘要:O(E)做法 当d[]数组求出来后,假设从k出发,可以通过找出满足d[j]=d[k]+cost[k][j]的边cost[k][j]来找到前趋节点j,因此通过不断寻找前趋节点就能还原出最短路. O(V)做法 设一个prev[]数组,prev[j]表示j的前趋,每次当更新最短路时就更新prev数组,全部 阅读全文
posted @ 2019-07-24 22:26 VBL 阅读(289) 评论(0) 推荐(0)