博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 2378 Tree Cutting(树形DP,水)
阅读量:4685 次
发布时间:2019-06-09

本文共 919 字,大约阅读时间需要 3 分钟。

题意:给出一棵树(n个节点),去掉一个点后,每个子树的节点数都不大于 n/2,求出这样的节点并按升序输出

树形dp,很神圣的样子,就是树形dfs嘛。。。

代码:

#include
#include
#include
#include
#include
#include
#define nMAX 10010using namespace std;int head[nMAX],dp[nMAX];int s_edge,n,num,ans[nMAX];struct Edge{ int u,v,nxt;}edge[nMAX*2];void addedge(int u,int v){ s_edge++; edge[s_edge].v=v; edge[s_edge].nxt=head[u]; head[u]=s_edge;}int max(int a,int b){ return a>b?a:b;}int dfs(int u,int father){ int cnt=1,SUM=0; for(int e=head[u];e;e=edge[e].nxt) { int v=edge[e].v; if(v==father)continue; int son=dfs(v,u); SUM=max(son,SUM); cnt+=son; } SUM=max(SUM,n-cnt); if(SUM<=n/2){ans[num++]=u;} return cnt;}int main(){ int i,j,k; while(~scanf("%d",&n)) { memset(head,0,sizeof(head)); s_edge=0; for(k=1;k

  

转载于:https://www.cnblogs.com/sdau10kuaile/archive/2012/08/10/2633090.html

你可能感兴趣的文章
Spark的39个机器学习库
查看>>
Electron学习笔记(一)
查看>>
Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
查看>>
配置NRPE的通讯
查看>>
VS2005编译VTK5.10.1
查看>>
shp系列(一)——利用C++进行shp文件的读(打开)与写(创建)开言
查看>>
总结上海永辉云商高级前端职位面试题集
查看>>
中国计算机学会推荐国际学术会议和期刊目录
查看>>
各种可以远程
查看>>
分治法实现1-N的数字按字典序全排列组合 Java语言
查看>>
匹配两个空格之间的字符。。。
查看>>
CSS 文字溢出 变成省略号 ...
查看>>
Spring事务
查看>>
java编程基础(三)流程控制语句
查看>>
让数据库跑的更快的7个MySQL优化建议
查看>>
jquery 取id模糊查询
查看>>
解决在vue中,自用mask模态框出来后,下层的元素依旧可以滑动的问题
查看>>
修改node节点名称
查看>>
Java 文件下载
查看>>
图论——读书笔记 (深度优先搜索)
查看>>