树的重心
来源:互联网 发布:淘宝拍a发b教程 编辑:程序博客网 时间:2024/06/14 05:38
树的重心,就是它为根后每个子树的节点数小于等于总结点数的二分之一。
其实代码代表了全部思想
我们开始假设
#include<vector>#define N 1000010vector<int>t[N];int w[N],f[N],ans,n;void getw(int x){ w[x]=1; fr(i,0,t[x].size()-1) if(f[x]!=t[x][i]) { f[t[x][i]]=x; getw(t[x][i]); w[x]+=w[t[x][i]]; }}//得出每个子树的大小void getans(int x){ if(ans) return; int nex=0; fr(i,0,t[x].size()-1) if(f[x]!=t[x][i]&&w[t[x][i]]>(n>>1)) nex=t[x][i];//向下找,直到大小最大的子树的根节点所代表的子树大小满足重心条件 if(nex) getans(nex); else ans=x;}int main(){ n=read(); fr(i,1,n-1) { int u=read(),v=read(); t[u].push_back(v); t[v].push_back(u); } getw(1); getans(1); printf("%d\n",ans); return 0;}
阅读全文
1 0
- 树的重心
- poj1655树的重心
- 求树的重心
- 树的重心
- 树的重心
- 树的重心、直径
- poj3107 树的重心
- 树的重心
- 树的重心
- 树的重心
- 树的重心
- 树的重心
- 树的重心
- 树的重心
- 树的重心
- poj1655(树的重心)
- 求树的重心
- 树的重心
- 两道贪心题
- Retroft2源码解析01-创建过程
- ssh免登陆验证
- es6笔记·····find()和findIndex()
- bzoj 5027: 数学题
- 树的重心
- linux学习第十八篇:vim编辑模式和命令模式
- 面试必备:ArrayMap源码解析
- 4.1(3)
- 在有序旋转数组中找到最小值
- 从0开始学Python--0x02. 启动Python
- 快速幂
- 单链表的表示和实现
- 第10周项目4- 哈夫曼编码的算法验证