题意:就是裸的求树的重心。

  1. #include<cstring>
  2. #include<algorithm>
  3. #include<cmath>
  4. #include<cstdio>
  5. #include<iostream>
  6. #define N 20007
  7. #define inf 100000007
  8. using namespace std;
  9.  
  10. int n,id,mnum;
  11. int siz[N];
  12. int cnt,head[N],next[N*],rea[N*];
  13.  
  14. void add(int u,int v)
  15. {
  16. next[++cnt]=head[u];
  17. head[u]=cnt;
  18. rea[cnt]=v;
  19. }
  20. void dfs(int u,int fa)
  21. {
  22. int sum=,msiz=-;
  23. siz[u]=;
  24. for (int i=head[u];i!=-;i=next[i])
  25. {
  26. int v=rea[i];
  27. if (v==fa) continue;
  28. dfs(v,u);
  29. siz[u]+=siz[v];
  30. msiz=max(msiz,siz[v]);
  31. }
  32. msiz=max(msiz,n-siz[u]);
  33. if ((msiz==mnum&&u<id)||msiz<mnum)
  34. {
  35. id=u;
  36. mnum=msiz;
  37. }
  38. }
  39. int main()
  40. {
  41. int T;scanf("%d",&T);
  42. while(T--)
  43. {
  44. scanf("%d",&n);
  45. cnt=;
  46. memset(head,-,sizeof(head));
  47. memset(siz,,sizeof(siz));
  48. for (int i=,x,y;i<n;i++)
  49. {
  50. scanf("%d%d",&x,&y);
  51. add(x,y),add(y,x);
  52. }
  53. id=-,mnum=inf;
  54. dfs(,-);
  55. printf("%d %d\n",id,mnum);
  56. }
  57. }

poj1655(dfs,树形dp,树的重心)(点分治基础)的更多相关文章

  1. POJ 1655.Balancing Act 树形dp 树的重心

    Balancing Act Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 14550   Accepted: 6173 De ...

  2. POJ3107Godfather[树形DP 树的重心]

    Godfather Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 6121   Accepted: 2164 Descrip ...

  3. POJ 2378.Tree Cutting 树形dp 树的重心

    Tree Cutting Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 4834   Accepted: 2958 Desc ...

  4. 树形dp&&树的重心(D - Godfather POJ - 3107)

    题目链接:https://cn.vjudge.net/contest/277955#problem/D 题目大意:求树的重心(树的重心指的是树上的某一个点,删掉之后形成的多棵树中节点数最大值最小). ...

  5. hdu-4118 Holiday's Accommodation(树形dp+树的重心)

    题目链接: Holiday's Accommodation Time Limit: 8000/4000 MS (Java/Others)     Memory Limit: 200000/200000 ...

  6. 树形DP+树状数组 HDU 5877 Weak Pair

    //树形DP+树状数组 HDU 5877 Weak Pair // 思路:用树状数组每次加k/a[i],每个节点ans+=Sum(a[i]) 表示每次加大于等于a[i]的值 // 这道题要离散化 #i ...

  7. [HDU 5293]Tree chain problem(树形dp+树链剖分)

    [HDU 5293]Tree chain problem(树形dp+树链剖分) 题面 在一棵树中,给出若干条链和链的权值,求选取不相交的链使得权值和最大. 分析 考虑树形dp,dp[x]表示以x为子树 ...

  8. poj1655(dfs,树形dp,树的重心)

    这是找树的重心的经典题目. 树的重心有下面几条常见性质: 定义1:找到一个点,其所有的子树中最大的子树节点数最少,那么这个点就是这棵树的重心.定义2:以这个点为根,那么所有的子树(不算整个树自身)的大 ...

  9. [poj3107]Godfather_树形dp_树的重心

    Godfather poj-3107 题目大意:求树的重心裸题. 注释:n<=50000. 想法:我们尝试用树形dp求树的重心,关于树的重心的定义在题目中给的很明确.关于这道题,我们邻接矩阵存不 ...

随机推荐

  1. Service官方教程(4)两种Service的生命周期函数

    Managing the Lifecycle of a Service The lifecycle of a service is much simpler than that of an activ ...

  2. 【图片匹配】--- SIFT_Opencv3.1.0_C++_ubuntu

    最近在捣鼓图片相似性匹配算法.这里先说一点必要的题外话: 如果是在同一个object不同角度拍摄的多张图片中,使用SIFT可以有不错的效果: 如果是寻找类别相同的图片(可能不是同一object),SI ...

  3. 设置电脑IP

    1.首先在Win7桌面上找到“网络”入口,如下图:   进入Win7网络 2.进入网络之后我们再点击顶部的“网络共享中心”,如下图:   进入Win7网络共享中心 3.进入Win7网络共享中心之后,我 ...

  4. AJPFX总结关于Java中过滤出字母、数字和中文的正则表达式

    1.Java中过滤出字母.数字和中文的正则表达式 (1)过滤出字母的正则表达式      [^(A-Za-z)] (2) 过滤出 数字 的正则表达式   [^(0-9)] (3) 过滤出 中文 的正则 ...

  5. pycharm一些快捷键(不定时添加)

    ctrl + shift + -  缩减多级菜单 ctrl + shifit + + 展开多级菜单 ctrl + shift + F8  删除多个断点 两个项目比较 ---选中要比较的项目---右键找 ...

  6. flex弹性布局操练2

    上一个是练习的1个内元素的,这次练习两个元素的. ul.box1 { list-style:none; background-color:black; display:flex; justify-co ...

  7. linux下svn安装(ALI ECS)

    yum安装svn 搭建和使用SVN 可参考阿里云文档:https://help.aliyun.com/document_detail/52864.html?spm=5176.8208715.110.1 ...

  8. 从0开始搭建SQL Server 2012 AlwaysOn 第一篇(AD域与DNS)

    随着业务发展,公司需要提高数据安全与性能需求,所以需要对新技术预研(先采坑),做技术积累: 了解相关AlwaysOn 故障转移集群(热备),数据路由(ICX),Moebius(莫比斯数据路由) 决定测 ...

  9. Node.js——url模块

    url模块通过api可以将get提交的参数方便的提取出来

  10. iOS微信页面 长按图片出现【存储图像】和【拷贝】不出现【发送朋友】【保存图片】

    最近遇到一大坑.微信加载的页面中出现图片,长按图片时不出现默认的菜单[发送朋友]等而是[存储图像]和拷贝. 原因:正常在页面中长按图片是没有问题的,但是如果你的页面嵌入了ifram然后又长按在ifra ...