HDOJ树形DP专题之Centroid

题目链接

这题跟Balance Act那题差不多,求图的质点。我直接将那题改了一下提交,结果PE了一次,又WA了一次,最后发现是单case,多case的提交为什么WA呢?

View Code
 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <vector>
 4 #define N 16000
 5 #define MAX(a,b) ((a)>(b)?(a):(b))
 6 using namespace std;
 7 vector<int> g[N];
 8 int n,p[N],d[N],sum[N],w[N],dmax,ans[N],cnt;
 9 void dfs(int u,int fa)
10 {
11     int i,v;
12     d[u]=(fa==-1?0:d[fa]+1);
13     dmax=MAX(dmax,d[u]);
14     for(i=0; i<g[u].size(); i++)
15     {
16         v=g[u][i];
17         if(v!=fa) dfs(v,p[v]=u);
18     }
19 }
20 void dp()
21 {
22     int i,j;
23     memset(w,0,sizeof(w));
24     for(i=0; i<n; i++)  sum[i]=1;
25     for(i=dmax; i>=0; i--)
26     {
27         for(j=0; j<n; j++)
28         {
29             if(d[j]!=i) continue;
30             w[j]=MAX(w[j],n-sum[j]);
31             if(i>0) w[p[j]]=MAX(w[p[j]],sum[j]),sum[p[j]]+=sum[j];
32         }
33     }
34 }
35 int main()
36 {
37     int i,t,u,v,min;
38     scanf("%d",&n);
39     for(i=0; i<n; i++)  g[i].clear();
40     for(i=0; i<n-1; i++)
41     {
42         scanf("%d%d",&u,&v);
43         u--,v--;
44         g[u].push_back(v);
45         g[v].push_back(u);
46     }
47     dmax=0;
48     dfs(0,-1);
49     dp();
50     min=0x7fffffff;
51     cnt=0;
52     for(i=0; i<n; i++)
53     {
54         if(w[i]<min)  cnt=0,min=w[i],ans[cnt++]=i;
55         else if(w[i]==min)  ans[cnt++]=i;
56     }
57     printf("%d %d\n",min,cnt);
58     for(i=0; i<cnt-1; i++)  printf("%d ",ans[i]+1);
59     printf("%d",ans[cnt-1]+1);
60     return 0;
61 }

 

转载于:https://www.cnblogs.com/algorithms/archive/2012/05/02/2479673.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/462041.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LAMP平台--部署Discuz论坛

环境&#xff1a;为了推广公司的产品并为客户服务提供一个交流平台&#xff0c;公司购买了一套Discuz论坛系统&#xff0c;要求安装到现有的LAMP服务器中&#xff0c;并简单划分论坛版块。需求&#xff1a;部署论坛服务器&#xff0c;安装Discuz论坛系统添加新区和版块产品发布…

C语言面试题大汇总

static有什么用途&#xff1f;&#xff08;请至少说明两种&#xff09; 1.限制变量的作用域 2.设置变量的存储域 7. 引用与指针有什么区别&#xff1f; 1) 引用必须被初始化&#xff0c;指针不必。 2) 引用初始化以后不能被改变&#xff0c;指针可以改变所指的对象。 2) 不存在…

链表创建为什么需要使用内存分配?

我们知道&#xff0c;在全局定义的结构体变量&#xff0c;存储全局数据区&#xff1b;在函数内定义的结构体变量&#xff0c;存储在栈区&#xff1b;使用malloc函数申请空间来存放结构体变量&#xff0c;则该结构体变量存储在堆空间中。 我们说的链表&#xff0c;其节点数据一…

我国三大坐标系的区别(西安80、北京54、WGS-84)

1、北京54坐标系(BJZ54) 北京54坐标系为参心大地坐标系&#xff0c;大地上的一点可用经度L54、纬度M54和大地高H54定位&#xff0c;它是以克拉索夫斯基椭球为基础&#xff0c;经局部平差后产生的坐标系。 1954年北京坐标系的历史&#xff1a; 新中国成立以后&#xff0c;我国大…

springside 4 web-init 启动

我初始化h2数据库&#xff0c; 然后把jar 放到 springside-4.0.0.RC2\examples\mini-web 中 &#xff0c;最后配置启动tomcat。 就出现这个错。 最开始我用 quick-start.bat &#xff0c;但总是执行到一半就 挂掉了。 提示spy 包没找到 。 这个是在装载 xml&#xff0c;解析成b…

ACM中java快速入门

2019独角兽企业重金招聘Python工程师标准>>> ACM中java快速入门 附&#xff1a; Chapter I. Java的优缺点各种书上都有&#xff0c;这里只说说用Java做ACM-ICPC的特点&#xff1a; (1) 最明显的好处是&#xff0c;学会Java&#xff0c;可以参加Java Challenge …

空分复用的概念

定义&#xff1a;让同一个频段在不同的空间内得到重复利用&#xff0c;称之为空分复用。一般使用自适应天线阵列技术实现&#xff0c;在不同的用户方向上形成不同的波束。也叫SDM。 另&#xff1a; 如果把空间的分割来区别不同的用户&#xff0c;就叫做SDMA。每个波束可提供一…

OV7725的帧率和PCLK寄存器设置

一、OV7725的PCLK的改变和以下几个寄存器有关&#xff1a; 1&#xff1a;OX0D&#xff08;COM4&#xff09;&#xff1b; ------------------------------------------------------------------------------------------------------------------ 0X0D COM4 41 …

从集合中选出一些元素组成子集合,使得这些子集合符合某种约束

今天朋友问了一个问题&#xff1a;现有整型数组 a[6] {1,2,4,3,5,8}&#xff0c;写一个函数&#xff0c;找出所有和为10的集合。穷举法暴力解决很容易&#xff0c;但没有体现算法思想。不妨将问题上升&#xff1a;有某大小为N的整型数组&#xff0c;从中找出所有和为M的集合。…

演示:两台交换机成环后的STP计算原则

演示&#xff1a;两台交换机成环后的STP计算原则演示目标&#xff1a;理解两台交换机成环后&#xff0c;STP的计算原则&#xff0c;重点理解PID的作用。演示环境&#xff1a;如下图7.49所示。演示背景&#xff1a;上图所示的环境为两台交换机的生成树环境&#xff0c;其中S1有较…

引水入城

最近在搞提高组的题,这是某天早上给的T1 T1最难还行 原题目 最近考试考多了就是见题打暴力,打搜索, 然而这题真是搜索, 但是并不能只搜索,会T,没亲测,但一定有效 这并不是考试题,所以看看标签(理直气壮的理由) 是BFS啊... 那就用DFS吧 这里的DP一开始看没有什么感觉,但是做着做…

程序员必知8大排序3大查找(一)

每天都在叫嚣自己会什么技术&#xff0c;什么框架&#xff0c;可否意识到你每天都在被这些新名词、新技术所迷惑&#xff0c;.NET、XML等等技术固然诱人&#xff0c;可是如果自己的基础不扎实&#xff0c;就像是在云里雾里行走一样&#xff0c;只能看到眼前&#xff0c;不能看到…

最详细的U-BOOT源码分析及移植

本文从以下几个方面粗浅地分析u-boot并移植到FS2410板上&#xff1a; 1、u-boot工程的总体结构 2、u-boot的流程、主要的数据结构、内存分配。 3、u-boot的重要细节&#xff0c;主要分析流程中各函数的功能。 4、基于FS2410板子的u-boot移植。实现了NOR Flash和NAND Flash启动,…

常见的算法思想(分治、动态规划、贪心算法、回溯法等)

《数据结构与算法》一书中讲到的几种常见的算法思想包括&#xff1a;递归和分治、动态规划、贪心算法、回溯法、分支限界法、概率算法、线性规划、NP完全性理论。我们平常所见的一般都是前5种&#xff0c;这里简单介绍。 分治法 把一个大规模问题划分成几个子问题&#xff0c;…

织梦教程

/************************************************************************************************************************************************** 织梦 文件说明 很详细 http://bbs.admin5.com/thread-1952932-1-1.html /****************************************…

TinyXML:一个优秀的C++ XML解析器

2019独角兽企业重金招聘Python工程师标准>>> 读取和设置xml配置文件是最常用的操作&#xff0c;试用了几个C的XML解析器&#xff0c;个人感觉TinyXML是使用起来最舒服的&#xff0c;因为它的API接口和Java的十分类似&#xff0c;面向对象性很好。 TinyXML是一个开源…

《C++标准程序库》学习笔记5 — 第七章

1.(P252) 迭代器的分类及其能力&#xff1a;input迭代器只能读取元素一次。如果复制input迭代器&#xff0c;并使原迭代器和新产生副本都向前读取&#xff0c;可能会遍历到不同的值。output迭代器类似。 2.(P258) C不允许修改任何基本类型&#xff08;包括指针&#xff09;的暂…

Android无线调试——抛开USB数据线

开发Android的朋友都知道&#xff0c;真机调试需要把手机与PC相连&#xff0c;然后把应用部署到真机上进行安装和调试。长长的USB线显得很麻烦&#xff0c;而且如果需要USB接口与其他设备连接的话显得很不方便。今天介绍一种不通过USB线就可以进行真机调试的方法。首先让手机与…

C中不能直接比较两个double类型

在比较float 和double类型的时候&#xff0c;因为float/double精度的问题&#xff0c;比如1.000000001可能和1.0000000000001相等&#xff0c;不应该直接使用a>b等类似的方式进行比较&#xff0c;而是采用 两个数做差取绝对值然后跟指定的精度进行比较 &#xff0c;便可得出…

C#基础——C#入门

教材是C#入门经典&#xff08;第四版&#xff09;。 PC:Thinkpad sl410 OS:Win7 Ultimate SDE:VS 2010 Ultimate 1.2 什么是C#&#xff1f; C#是从C、C语言演化而来&#xff0c;Microsoft专门为使用.Net平台而创建的语言&#xff0c;读作C sharp。运行在.Net CRL环境上的应用程…