求树的重心的模板题,size[u]维护以u为根的子树大小,f[u]表示去掉u后的最大子树。

 1 #include<cstdio>
2 #include<iostream>
3 #include<cstring>
4 using namespace std;
5 const int INF=0x7f7f7f7f;
6 const int N=20005;
7 int head[N],to[N*2],nxt[N*2],f[N],size[N];
8 int tot,n,T,center,num;
9
10 void add(int x,int y){
11 nxt[++tot]=head[x];
12 head[x]=tot;
13 to[tot]=y;
14 }
15
16 void dfs(int u,int fa){
17 size[u]=1,f[u]=0;
18 for(int i=head[u];i;i=nxt[i]){
19 int v=to[i];
20 if(v==fa) continue;
21 dfs(v,u);
22 size[u]+=size[v];
23 f[u]=max(f[u],size[v]);
24 }
25 f[u]=max(f[u],n-size[u]);
26 if(f[u]<f[center]||f[u]==f[center]&&u<center){
27 center=u;
28 num=f[u];
29 }
30 }
31
32 void init(){
33 memset(head,0,sizeof(head));
34 tot=0;
35 center=num=0;
36 }
37
38 int main(){
39 scanf("%d",&T);
40 while(T--){
41 init();
42 scanf("%d",&n);
43 int x,y;
44 for(int i=1;i<n;i++){
45 scanf("%d%d",&x,&y);
46 add(x,y);add(y,x);
47 }
48 f[0]=INF;
49 dfs(1,0);
50 printf("%d %d\n",center,num);
51 }
52 return 0;
53 }

最新文章

  1. MVC 后台管理框架 FineUIMvc 在线示例
  2. #研发中间件介绍#异步消息可靠推送Notify
  3. certbot+nginx (仅用作个人纪录)
  4. html background 背景颜色美化 类似毛玻璃
  5. 5.4 String
  6. JS--传统事件模型的问题
  7. ionicPopup弹出列表选择对话框
  8. 自制单片机之十二……AT89C2051烧写器的制做与调试
  9. (大数据工程师学习路径)第一步 Linux 基础入门----用户及文件权限管理
  10. [知了堂学习笔记]_MVC设计模式与JavaWEB三层架构
  11. jQuery相关用法
  12. hdu 2647 Reward(拓扑排序+反图)
  13. 技术课堂】如何管理MongoDB数据库?
  14. Phoenix安装配置
  15. 绝命毒师第五季/全集Breaking Bad迅雷下载
  16. Linux(CentOS)之-性能监控
  17. Codewars, Leetcode, Hackerrank. Online Judges Reviews
  18. Codeforces Round #302 解题报告
  19. [Todo]Redis &amp; Mysql可以看的书籍
  20. 如何学习web开发环境搭建和脚手架

热门文章

  1. SAM复杂度证明
  2. Linux系列之压缩命令
  3. 常用类--String
  4. Linux操作系统学习(运维必会)
  5. 大数据Hadoop入门教程 | (二)Linux
  6. TCP实现多个客户端发送数据给服务器端
  7. 垃圾收集器 参阅&lt;&lt;深入理解JAVA虚拟机&gt;&gt;
  8. PerfView专题 (第十一篇):使用 Diff 功能洞察 C# 内存泄漏增量
  9. 第七十九篇:数组方法(forEach,some,every,reduce)
  10. RTSP播放器开发填坑之道