
图的DFS
cjk_cjk
这个作者很懒,什么都没留下…
展开
-
BZOJ3124 [sdoi2013]直径(树上的dfs)
树上的DFS【题解】1. 给你一棵树,求树的直径: 先随便取一个点,一遍dfs找到离它最远的点low,再以low为起点做一遍dfs,找到离low最远的点high 那么low到high的距离即为直径(反证法可以证明) 2. 求出有多少条边在这棵树的所有直径上: 两个结论: 1)首先,这些边一定在同一条直径上(因为它们在任意一条直径上)原创 2015-02-02 18:40:25 · 2386 阅读 · 0 评论 -
BZOJ1051 [HAOI2006]受欢迎的牛(强连通分量+缩点)
题目大意:给出一个有向图,求有多少个结点能被任意一个结点到达 如果图无环,当出度为0的结点只有一个时(受欢迎的牛就是这头),问题有解,否则无解(几个出度为0的结点不会到达对方)如果图有环,由于同一个强连通分量中的结点相互可达(互相喜欢),它们可以看作一个点(权值为强连通分量的大小)因此,此题的解法为寻找强连通分量并缩点,之后按无环图处理即可 一个多月没看,全原创 2015-02-02 22:13:17 · 719 阅读 · 0 评论 -
[NOI2011]道路修建(树上dfs)
【题解】无根树转有根树,记录每个点的size(以它为根的子树含有多少结点),然后再从根dfs一遍整棵树即可,每条边i的贡献是:abs( (n-size[v[i]]) - size[v[i]] ) * w[i]【代码】#include#include#includetypedef long long LL;int v[2000005]={0},w[2000005]={0}原创 2015-03-16 01:04:36 · 562 阅读 · 0 评论 -
[APIO2009]抢掠计划(强连通分量+缩点+拓扑排序+dp)
题意:给定一个有向图,从指定起点出发,到任意一个指定终点停止,求经过的所有结点的最大点权和。点数、边数因为一个强连通分量内的点相互可达,所以如果要经过其中一个点,就应经过它所在的强连通分量内的所有点,因此将一个强连通分量缩成一个点 这样得到了一个有向无环图,在图上dp即可 先对所有起点可达的点做一遍拓扑排序,然后用队列维护入度为0的点,每次取出队首元素,用它的答案更新其他点原创 2015-05-03 23:30:18 · 751 阅读 · 0 评论 -
BZOJ1040 [ZJOI2008]骑士(基环树+树形dp)
【题解】出现了基环森林,还是考虑断环为链,然后dp对每个连通块,随意找到环上一边并断开,记该边的端点为x,y限制x,y的情况:1. x不取,y取上 2. y不取,x取上 树形dp:记 f[i][0]表示不取i时的最大战斗力; f[i][1]表示取i时的最大战斗力,以上两种情况去最优值即可 注意:1. 处理破环为链的问题,使用邻接表比较合适 2. 对x,y原创 2015-06-11 18:15:25 · 835 阅读 · 0 评论