i 表示节点 i ,j=0表示不选择其父节点,j=1表示选择其父节点。f 为其父节点。

取 每个节点选择/不选择 两者中较小的那个。

一组数据:

15
1 2
1 3
1 4
1 10
10 9
10 11
12 10
12 14
10 13
13 15
4 5
5 7
4 6
6 8

答案是6

 #include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>
#include <vector> using namespace std; const int MAXN = ; vector<int> adj[MAXN];
bool vis[MAXN][];
int d[MAXN][];
int n, m;
//int path[MAXN][2];
//int fang[MAXN]; int dp( int i, int j, int f )
{
if ( vis[i][j] ) return d[i][j];
vis[i][j] = true;
int &ans = d[i][j]; ans = ;
for ( int k = ; k < (int)adj[i].size(); ++k )
if ( adj[i][k] != f ) ans += dp( adj[i][k], , i );
//path[i][j] = f; if ( j || f < )
{
int sum = ;
for ( int k = ; k < (int)adj[i].size(); ++k )
if ( adj[i][k] != f )
sum += dp( adj[i][k], , i );
if ( sum < ans )
{
ans = sum;
//path[i][j] = -f;
}
}
return ans;
} //void DFS( int i, int j, int f )
//{
// if ( fang[i] != -1 ) return;
// if ( !path[i][j] || path[i][j] == f )
// {
// if ( f >= 0 ) fang[f] = j;
// for ( int k = 0; k < (int)adj[i].size(); ++k )
// if ( adj[i][k] != f ) DFS( adj[i][k], 1, i );
// }
// else
// {
// if ( f >= 0 ) fang[f] = j;
// for ( int k = 0; k < (int)adj[i].size(); ++k )
// if ( adj[i][k] != f ) DFS( adj[i][k], 0, i );
//
// }
// return;
//} int main()
{
while ( ~scanf( "%d", &n ) )
{
m = n - ;
for ( int i = ; i <= n; ++i ) adj[i].clear(); for ( int i = ; i < m; ++i )
{
int a, b;
scanf( "%d%d", &a, &b );
adj[a].push_back(b);
adj[b].push_back(a);
} memset( vis, false, sizeof(vis) );
//memset( fang, -1, sizeof(fang) );
//memset( path, 0, sizeof(path) ); int ans = dp( , , - );
printf( "%d\n", ans );
}
return ;
}

SPOJ 1435 Vertex Cover 树形DP的更多相关文章

  1. SPOJ 1435 - Vertex Cover(树形DP,树的最小点覆盖)

    算是个经典题目了,很模板的树形DP题目 做这个题的时候一开始就想到树形DP了,可是由于各种原因没写出来,代码太糟烂了,赛后还是改了好久才过的 dp(u,0)=sum(dp(v,1)): dp(u,1) ...

  2. SPOJ PT07X Vertex Cover

    题目意思: 一棵树,找到最少的点能覆盖到所有的边,(也就是每条边俩端 至少有一个在你找到的集合): 解法:每条边只能被俩个点中的一个,或全部覆盖所以我们有树形DP来解: DP[num][flag]// ...

  3. 【BZOJ2616】SPOJ PERIODNI 笛卡尔树+树形DP

    [BZOJ2616]SPOJ PERIODNI Description Input 第1行包括两个正整数N,K,表示了棋盘的列数和放的车数. 第2行包含N个正整数,表示了棋盘每列的高度. Output ...

  4. BZOJ2616 SPOJ PERIODNI(笛卡尔树+树形dp)

    考虑建一棵小根堆笛卡尔树,即每次在当前区间中找到最小值,以最小值为界分割区间,由当前最小值所在位置向两边区间最小值所在位置连边,递归建树.那么该笛卡尔树中的一棵子树对应序列的一个连续区间,且根的权值是 ...

  5. SPOJ 1479 +SPOJ 666 无向树最小点覆盖 ,第二题要方案数,树形dp

    题意:求一颗无向树的最小点覆盖. 本来一看是最小点覆盖,直接一下敲了二分图求最小割,TLE. 树形DP,叫的这么玄乎,本来是线性DP是线上往前\后推,而树形DP就是在树上,由叶子结点状态向根状态推. ...

  6. codeforces 709E E. Centroids(树形dp)

    题目链接: E. Centroids time limit per test 4 seconds memory limit per test 512 megabytes input standard ...

  7. CF 461B Appleman and Tree 树形DP

    Appleman has a tree with n vertices. Some of the vertices (at least one) are colored black and other ...

  8. Codeforces Round #263 (Div. 2) D. Appleman and Tree(树形DP)

    题目链接 D. Appleman and Tree time limit per test :2 seconds memory limit per test: 256 megabytes input ...

  9. HDU 3586.Information Disturbing 树形dp 叶子和根不联通的最小代价

    Information Disturbing Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/ ...

随机推荐

  1. 系统架构师JD

    #################################################################################################### ...

  2. EntityFramework常用查询

    Sql语句.存储过程: 1.无参数查询var model = db.Database.SqlQuery<UserInfo>("select* from UserInfoes &q ...

  3. left join 过滤条件写在on后面和写在where 后面的区别

    create table t1(id int, feild int);insert into t1 values(1 , 1);insert into t1 values(1 , 2);insert ...

  4. 类的const成员

    类的const成员包括const数据成员和const成员函数: 1.const数据成员: 和普通的const变量一样,定义时初始化,且不能修改 2.const成员函数: const成员函数只能访问其他 ...

  5. 非常实用的10个PHP高级应用技巧

    PHP 独特的语法混合了 C.Java.Perl 以及 PHP 自创新的语法.它可以比 CGI或者Perl更快速的执行动态网页.用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML ...

  6. 自选项目--手机锁屏软件--NABC分析

    N(Need 需求) 关键字:利用碎片时间加强对想记的事物的记忆.备忘.一般来说,锁屏目的大致有三点: 1.保护手机隐私 2.防止误操作手机 3.在不关闭系统软件的情况下节省电量 对于市面上已有的锁屏 ...

  7. c语言基础:各种数据类型的输出占位符

    c语言中的输出操作相对java来说是比较麻烦的,每种数据类型的输出都有各自的占位符: 下面是各种数据类型的输出占位符: short/int : %d ; printf("这个整数是:%d&q ...

  8. android 开发高仿QQ表情选择、输入框

    首先大家看效果: 用到的文件有(源码文件有,只包含表情.输入框等有关文件,工程项目是公司项目,恕不公开啦): res: drawable/face_del_icon.xml drawable/iv_f ...

  9. 【BZOJ】【1324】王者之剑

    网络流/二分图最大点权独立集 Amber(胡伯涛)论文<最小割模型在信息学竞赛中的应用>中的例题…… 感觉这个好神啊,果然是一切皆为网络流……这转化太神奇了 /************** ...

  10. windows下几种I/O端口(了解)

    如果你想在Windows平台上构建服务器应用,那么I/O模型是你必须考虑的.Windows操作系统提供了选择(Select).异步选择(WSAAsyncSelect).事件选择(WSAEventSel ...