摘要: 题意: 在一个树中找出权值和最大的一个连通子集。分析: 和 1463 几乎一样的题, 状态转移方程 // dp[i][0]以i 为根节点不包含i 的值 // dp[i][1]以i为根节点包含 i的值 // dp[i][0]=max(dp[j][1],dp[j][0]) // dp[i][1]+=min(dp[j][0],dp[j][1]) j 为 i 的儿子View Code #include<stdio.h>#include<string.h>#define clr(x)memset(x,0,sizeof(x))struct node{ int x,y,w;}p[10 阅读全文
posted @ 2012-07-17 19:28 'wind 阅读(510) 评论(0) 推荐(0) 编辑
摘要: 题意: 找出无向图的割点,并判断每个割点去掉后能形成多少个双连通分量。分析: 割点的定义: 在深搜树中,时间戳为 dfn[k] ,当 K 满足(1)(2)中一个时,k 为割点 (1) k 为深搜树的根,当且仅当 k 的儿子个数>=2 时 k 为割点;(2) k 为深搜树的中间节点(k 既不是根也不是叶),那么k 必然有父亲和儿子; 对于(1)是显然的,根结点k一旦有2个以上的分支,那么删除k必然出现森林; 对于(2)首先注意low[son]>= dfn[k]这个条件,意思就是“k的儿子son的辈分最高的祖先(暂且设其为w)的深度,比k的深度要深(或者等于k的深度,此 时k就是w), 阅读全文
posted @ 2012-07-17 15:52 'wind 阅读(245) 评论(0) 推荐(0) 编辑