POJ2378->树形DP
来源:互联网 发布:什么是淘宝登录密码 编辑:程序博客网 时间:2024/06/06 15:49
//树形DP
//去掉哪些点可以使树上联通的节点个数小于n/2
//对树进行后序遍历
//状态转移方程:dp[root] = max(n-sum , mason) ;
#include <stdio.h>
#include <iostream>
#include <vector>
#include <string.h>
using namespace std ;
#define MAX 10005
vector<int> tree[MAX] ;
int n;
int dp[MAX] ;
int DFS(int root ,int fa)//root为当前节点, fa 代表该节点的父亲节点
{
int k ,mason=0;
int sum = 1;
int len = tree[root].size() ;
dp[root] = 0 ;
for(int i = 0 ; i < len ; i ++)
{
k = tree[root][i] ;
if(k == fa) continue ;
int ans = DFS(k , root) ;
mason = max(mason , ans) ;
sum += ans ;
}
dp[root] = max(n-sum , mason) ;
return sum ;
}
int main()
{
while(scanf("%d", &n)!= EOF)
{
int a , b ;
for(int i = 1 ; i <= n ; i ++) tree[i].clear();
for(int i = 1 ; i < n ; i ++)
{
scanf("%d%d",&a , &b) ;
tree[a].push_back(b) ;
tree[b].push_back(a) ;
}
DFS(1,0 ) ;
int flag = 0 ;
for(int i = 1 ; i <= n ; i++)
{
if(2*dp[i] <= n)
{
flag = 1 ;
cout << i << endl ;
}
}
if(! flag) printf("NONE\n") ;
}
return 0 ;
}
//去掉哪些点可以使树上联通的节点个数小于n/2
//对树进行后序遍历
//状态转移方程:dp[root] = max(n-sum , mason) ;
#include <stdio.h>
#include <iostream>
#include <vector>
#include <string.h>
using namespace std ;
#define MAX 10005
vector<int> tree[MAX] ;
int n;
int dp[MAX] ;
int DFS(int root ,int fa)//root为当前节点, fa 代表该节点的父亲节点
{
int k ,mason=0;
int sum = 1;
int len = tree[root].size() ;
dp[root] = 0 ;
for(int i = 0 ; i < len ; i ++)
{
k = tree[root][i] ;
if(k == fa) continue ;
int ans = DFS(k , root) ;
mason = max(mason , ans) ;
sum += ans ;
}
dp[root] = max(n-sum , mason) ;
return sum ;
}
int main()
{
while(scanf("%d", &n)!= EOF)
{
int a , b ;
for(int i = 1 ; i <= n ; i ++) tree[i].clear();
for(int i = 1 ; i < n ; i ++)
{
scanf("%d%d",&a , &b) ;
tree[a].push_back(b) ;
tree[b].push_back(a) ;
}
DFS(1,0 ) ;
int flag = 0 ;
for(int i = 1 ; i <= n ; i++)
{
if(2*dp[i] <= n)
{
flag = 1 ;
cout << i << endl ;
}
}
if(! flag) printf("NONE\n") ;
}
return 0 ;
}
0 0
- POJ2378->树形DP
- POJ2378(树形DP)
- POJ2378【树形DP】
- poj2378 树状dp
- 树形dp
- 树形DP
- 树形dp
- 树形DP
- 树形dp
- 树形DP
- 树形DP
- 树形DP
- 树形DP
- 树形dp
- 树形dp
- 树形dp
- 树形dp
- 树形DP
- 可重录入与不可重录入和ELF文件的相关问题
- 在LinearLayout里面动态添加ImageView
- Mongoose3.3嵌入式web服务器源码剖析
- LeetCode - 3. Longest Substring Without Repeating Characters
- 第二天
- POJ2378->树形DP
- 更新Ubuntu Kylin源遇到问题
- 消息队列设计精要
- 0710学习记录
- yii2.0数据库交互ORM
- 客户端C和服务器S之间建立一个TCP连接,该连接总是以1KB的最大段长发送TCP段,客户端C有足够的数据要发送。当拥塞窗口为16KB的时候发生超时,如果接下来的4个RTT往返时间内的TCP段的传输是成
- 第一篇博客
- Java 数据类型的转换
- 初识Servlet过滤器