题目链接:http://poj.org/problem?id=1947

看了很多题解都是直接一遍dfs就搞定的方法,但是我实在是没看懂那个转移方程。最后在茫茫博客中终于发现了一个有逻辑的方法,但是复杂度好像要高一些,但是还是把这个题过了。http://www.chongchonggou.com/g_91242661.html

#include<cstdio>
#include<vector>
#include<cstring>
using namespace std; const int maxn=;
vector<int> G[maxn]; const int INF=0x3f3f3f3f;
int dp[][maxn];
int f[maxn][maxn];
int res[maxn][maxn]; void dfs(int u,int fa)
{
if (G[u].size()==)
{
f[u][]=f[u][]=;
if (fa==-) res[u][]=res[u][]=;
else res[u][]=res[u][]=;
}
else
{
for (int i=;i<G[u].size();i++)
{
int v=G[u][i];
dfs(v,u);
}
memset(dp,INF,sizeof(dp));
dp[][]=;
for (int i=;i<=G[u].size();i++)
{
for (int j=;j<=;j++)
{
dp[i&][j]=INF;
for (int k=;k<=j;k++)
{
dp[i&][j]=min(dp[i&][j],dp[i&^][j-k]+f[G[u][i-]][k]+(k==));
}
}
}
f[u][]=;
if (fa==-) res[u][]=;
else res[u][]=;
for (int i=;i<=;i++) f[u][i]=dp[G[u].size()&][i-];
for (int i=;i<=;i++) res[u][i]=f[u][i]+(fa!=-);
}
} int main()
{
memset(f,INF,sizeof(f));
memset(res,INF,sizeof(res));
int n,P;
scanf("%d%d",&n,&P);
for (int i=;i<n;i++)
{
int u,v;
scanf("%d%d",&u,&v);
G[u].push_back(v);
}
dfs(,-);
int ans=INF;
for (int i=;i<=n;i++) ans=min(ans,res[i][P]);
printf("%d\n",ans);
return ;
}

最新文章

  1. Warning: Using a password on the command line interface can be insecure.解决办法
  2. 攻城狮在路上(叁)Linux(零)--- 软件环境、参考书目等一览表
  3. spi_flash
  4. SQL 2012 镜像 图解(解决1418)
  5. js button onclick动作赋值操作
  6. Mac下safari、chrome打开开发者工具快捷键
  7. [VS2012]无法新建或者编译已有的项目
  8. static关键字修饰类
  9. FAL[client]: Failed to request gap sequence GAP - thread 1 sequence 29-29
  10. Hadoop学习历程(五、真正的分布式系统搭建)
  11. 1298 The Hardest Problem Ever
  12. python与redis交互
  13. No mapping found for HTTP request with URI [/user/login.do] in DispatcherServlet with name &#39;dispatcher&#39;错误
  14. ionic 3 热更新 Hot Code Push
  15. SQL SERVER LINUX
  16. [转帖]xserver相关知识汇总
  17. BBWebImage 设计思路
  18. NodeJs笔记 : express框架创建工程 ----- 路由设计
  19. vue element-ui 用checkebox 来模拟选值 1/0
  20. TClientDataSet[9]: 计算字段和 State

热门文章

  1. PublicCMS 网站漏洞 任意文件写入并可提权服务器权限
  2. Java+Selenium3自动化测试框架设计系列--href=&quot;javascript:void(0)&quot;如何获得元素定位
  3. 在amazon linux上安装Jenkins
  4. 6 wireshark 安装使用 数据包抓取
  5. VINS紧耦合优化公式及代码解析
  6. SpringCloud项目,接口调用返回http 500 - Internal Server Error的错误
  7. Messy Code in Windows Server 2008 R2 English Edition
  8. 什么鬼,又不知道怎么命名class了
  9. CSP201412-1:门禁系统
  10. 在阿里云上遇见更好的Oracle(四)