首页 技术 正文
技术 2022年11月16日
0 收藏 657 点赞 3,405 浏览 1584 个字

思路:dp[i][j]表示,以i节点为根,删去j个节点最少要断几条边。

那么dp[u][j]=min(dp[u][j],dp[v][k]+dp[u][j-k]);//选取最优状态

dp[u][j]=min(dp[u][j],dp[u][j-son[v]]+1);//切断与子节点相连的边

对于子节点

dp[v][n-son[v]]=1;

dp[v][j]=min(dp[v][j],dp[v][j-n+son[v]]+1)//表示不需要由父节点过来的那条分支

最有从所有状态中选举最优的dp[i][n-p];

#include<map>
#include<set>
#include<cmath>
#include<queue>
#include<cstdio>
#include<vector>
#include<string>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define Maxn 160
#define Maxm 200010
#define LL __int64
#define Abs(x) ((x)>0?(x):(-x))
#define lson(x) (x<<1)
#define rson(x) (x<<1|1)
#define inf 0x7fffffff
#define Mod 1000000007
using namespace std;
int head[Maxn],vi[Maxn],e,dp[][],n,p,son[],root[Maxn];
struct Edge{
int u,v,next;
}edge[Maxm];
void init()
{
memset(head,-,sizeof(head));
memset(vi,,sizeof(vi));
memset(son,,sizeof(son));
for(int i=;i<=;i++){
root[i]=i;
for(int j=;j<=;j++){
dp[i][j]=;
}
dp[i][]=;
}
e=;
}
void add(int u,int v)
{
edge[e].u=u,edge[e].v=v,edge[e].next=head[u],head[u]=e++;
edge[e].u=v,edge[e].v=u,edge[e].next=head[v],head[v]=e++;
}
void dfs(int u)
{
int i,v,j,k;
vi[u]=;
son[u]=;
for(i=head[u];i!=-;i=edge[i].next){
v=edge[i].v;
if(vi[v]) continue;
dfs(v);
son[u]+=son[v];
for(j=n-;j>=;j--){
for(k=;k<=j;k++){
dp[u][j]=min(dp[u][j],dp[u][j-k]+dp[v][k]);
}
if(j>=son[v])
dp[u][j]=min(dp[u][j],dp[u][j-son[v]]+);
}
dp[v][n-son[v]]=;
for(j=n-;j>=n-son[v];j--)
dp[v][j]=min(dp[v][j],dp[v][j-n+son[v]]+);
}
}
int main()
{
int i,j,u,v;
while(scanf("%d%d",&n,&p)!=EOF){
init();
for(i=;i<n;i++){
scanf("%d%d",&u,&v);
add(u,v);
}
if(p==n){
printf("0\n");
continue;
}
if(p==n-)
{
printf("1\n");
continue;
}
dfs();
int ans=;
for(i=;i<=n;i++){
ans=min(ans,dp[i][n-p]);
}
printf("%d\n",ans);
}
return ;
}
上一篇: hdu-5586 Sum(dp)
下一篇: Tensorflow之安装
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,983
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,500
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,344
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,127
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,761
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,838