Pku1947 Rebuilding Roads
题意是给一棵树,问最少删掉几条边.使得剩下的子树中有节点个数为m个的
设f[i][j]表示i号点所在的子树中选了j个点至少需要删去f[i][j]条边。
code:
#include<cstdio>
#include<iostream>
#include<cmath>
#include<cstring>
#include<algorithm>
#define maxn 155
#define inf 1061109567
using namespace std;
char ch;
int n,k,a,b,tot,ans,now[maxn],son[maxn<<],pre[maxn<<];
int siz[maxn],deg[maxn],f[maxn][maxn],tmp[maxn];
bool ok;
void read(int &x){
for (ok=,ch=getchar();!isdigit(ch);ch=getchar()) if (ch=='-') ok=;
for (x=;isdigit(ch);x=x*+ch-'',ch=getchar());
if (ok) x=-x;
}
void put(int a,int b){pre[++tot]=now[a],now[a]=tot,son[tot]=b;}
void dfs(int u,int fa){
f[u][]=,siz[u]=;
for (int p=now[u],v=son[p];p;p=pre[p],v=son[p])
if (v!=fa){
dfs(v,u);
memset(tmp,,sizeof(tmp));
for (int i=;i<=siz[u];i++) tmp[i]=f[u][i]+;
for (int i=;i<=siz[u];i++)
for (int j=;j<=siz[v];j++) tmp[i+j]=min(tmp[i+j],f[u][i]+f[v][j]);
siz[u]+=siz[v];
for (int i=;i<=siz[u];i++) f[u][i]=tmp[i];
}
}
int main(){
read(n),read(k);
for (int i=;i<n;i++) read(a),read(b),put(a,b),put(b,a);
memset(f,,sizeof(f));
dfs(,);
ans=f[][k];
for (int i=;i<=n;i++) ans=min(ans,f[i][k]+);
printf("%d\n",ans);
return ;
}
Pku1947 Rebuilding Roads的更多相关文章
- POJ1947 Rebuilding Roads[树形背包]
		Rebuilding Roads Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 11495 Accepted: 5276 ... 
- POJ 1947 Rebuilding Roads
		树形DP..... Rebuilding Roads Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 8188 Accepted: ... 
- POJ 1947 Rebuilding Roads 树形DP
		Rebuilding Roads Description The cows have reconstructed Farmer John's farm, with its N barns (1 & ... 
- [USACO2002][poj1947]Rebuilding Roads(树形dp)
		Rebuilding RoadsTime Limit: 1000MS Memory Limit: 30000KTotal Submissions: 8589 Accepted: 3854Descrip ... 
- [poj 1947] Rebuilding Roads  树形DP
		Rebuilding Roads Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 10653 Accepted: 4884 Des ... 
- POJ 1947 Rebuilding Roads 树形dp 难度:2
		Rebuilding Roads Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 9105 Accepted: 4122 ... 
- DP Intro - poj 1947 Rebuilding Roads(树形DP)
		版权声明:本文为博主原创文章,未经博主允许不得转载. Rebuilding Roads Time Limit: 1000MS Memory Limit: 30000K Total Submissi ... 
- 【树形dp】Rebuilding Roads
		[POJ1947]Rebuilding Roads Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 11934 Accep ... 
- POJ题目1947 Rebuilding Roads(树形dp)
		Rebuilding Roads Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 9957 Accepted: 4537 ... 
随机推荐
- [Locked] Factor combinations
			Numbers can be regarded as product of its factors. For example, 8 = 2 x 2 x 2; = 2 x 4. Write a func ... 
- [转载]软件测试之Web测试经典总结
			转载自:软件测试之Web测试经典总结 基于Web的系统测试在基于Web的系统开发中,如果缺乏严格的过程,我们在开发.发布.实施和维护Web的过程中,可能就会碰到一些严重的问题,失败的可能性很大.而且, ... 
- 通过js子页面回写父页面,改变父页面控件的值
			[原]js中实现子页面向父页面中赋值 (方法一) 父页面:<input id="input1" type="text"/><a href=& ... 
- pl sql developer登陆界面找不到oracle数据库选项
			window 64位的操作系统 装的数据库win64_11gR2的数据库,PL SQL是PLSQL Developer 7.1.5最后是下载了一个instantclient_11_2包将你数据库安装路 ... 
- ubuntu firefox 选中变成了删除
			在ubuntu下 我的firefox浏览器出现了问题.描述: 1.在firefox中所有能够删除的文字只要选中就自动删除了. 终端中 ibus-setup勾掉在应用窗口中启用内嵌编辑模式 
- JVM调优之jstack找出发生死锁的线程
			1.执行死锁程序 2.执行 jstack -l 21733 | more 结果如下: 死锁程序: public static void main(String[] args) { // TODO Au ... 
- PHP安全编程:HTTP请求欺骗(转)
			一个比欺骗表单更高级和复杂的攻击方式是HTTP请求欺骗.这给了攻击者完全的控制权与灵活性,它进一步证明了不能盲目信任用户提交的任何数据. 为了演示这是如何进行的,请看下面位于http://exampl ... 
- CreateFont具体解释
			CFont * f; f = new CFont; f->CreateFont(10, // nHeight 0, // nWidth 0, // n ... 
- Java中数组的初始化方式
			Java中数组的初始化方式 初始化方式有两种: 1.静态初始化:初始化时由程序猿显式指定每一个数组元素的初始值,由系统指定数组长度 2.动态初始化:初始化时由程序猿仅仅指定数组长度,由系统为数组 ... 
- java内存不足
			-Xmx1024m -Xms1024m -XX:PermSize=128m -XX:MaxPermSize=512m ------------------------- 亲测可用 
