摘要: 简单树型DP题意:一个图,N个点,N-1条边,并且说明是树(一棵树,连森林都排除掉了)。在这颗树中删除一个点rt以及和他关联的边,那么剩下的部分将会是森林,统计森林中每棵树的节点数,最大值记录下来为dp[rt],你的任务是找出最小的dp[rt],如果有多个rt相等,那么按升序输出所有rt的编号一个最大值最小的问题,解法是求出所有的dp[rt]然后记录最小值因为本来是一棵树,用哪个做顶点都可以,默认为1,为整个树的祖先。定义sum[rt] = 以rt为根的子树含有的节点数 dp[rt] =dp[rt]:除去rt后,各个分块中节点数的最大值 ans = min{ dp[rt] }; 删掉rt... 阅读全文
posted @ 2013-04-11 23:07 Titanium 阅读(264) 评论(0) 推荐(0) 编辑
摘要: 树DP题意:输入n和m,表示n个城市,m条无向边,下面一行n个数字,表示每个城市的权值,下面m行是每条边的信息,u,v,w,顶点和边权。问你从一个城市出发,走出一条路线,使得权值和最大,权值和包括这条路线上城市的权值和边的权值和。题中有一句话出卖了它是个树DP:It turned out that if Petrovich can fly (using one or several flights) from townito townj, then there is exactly one way to do this.从一个顶点去另一个顶点如果连通的话只有一条路径,说明这个无向图其实是个无根 阅读全文
posted @ 2013-04-11 10:16 Titanium 阅读(368) 评论(0) 推荐(0) 编辑