[模板]树的重心
来源:互联网 发布:淘宝买机油靠谱吗 编辑:程序博客网 时间:2024/05/29 13:48
[模板] 求树的重心[任务] 求树的重心[接口] vector<edge> way[maxn] 无向图 int siz[] 该节点的子节点个数(包括自己) int mu[] 该节点的(最大,节点数最多)子树的节点数 allnode 根节点的子节点个数 = siz(root) int getroot(int u,int fa) 返回以u为根节点的子树的重心,fa为u的父节点(防止回去); void dfsize(int u,int fa) 创建siz数组和mu数组(以u为根节点) void dfsroot(int u,int fa,int allnode,int &root) 通过之前创建的siz数组和mu数组得到重心.(allnode = siz[u])[代码]void dfsize(int u,int fa){ siz[u] = 1; mu[u] = 0; for(int i=0;i<way[u].size();i++) { int t = way[u][i].to; if(t == fa || vis[t] ) continue; dfsize(t,u); siz[u] += siz[t]; mu[u] = max(mu[u],siz[t]); }}void dfsroot(int u,int fa,int allnode,int &root){ mu[u] = max(mu[u],allnode - siz[u]); if(mu[u] < mu[root]) root = u; for(int i=0;i<way[u].size();i++) { int t = way[u][i].to; if(t!=fa && !vis[t]) dfsroot(t,u,allnode,root); }}int getroot(int u,int fa){ int root = 0; dfsize(u,fa); dfsroot(u,fa,siz[u],root); return root;}
阅读全文
0 0
- [模板]树的重心
- 会议树的重心模板
- 树的重心(模板)
- 树的重心 背诵用模板
- poj1655 Balancing Act(树的重心[模板])
- 数的重心模板
- 【原创】模板-树的前中后序遍历,树的重心直径
- POJ 3107 Godfather (树的重心模板题)
- 树的重心
- poj1655树的重心
- 求树的重心
- 树的重心
- 树的重心
- 树的重心、直径
- poj3107 树的重心
- 树的重心
- 树的重心
- 树的重心
- tmpfs 和 /dev/shm
- python脚本学习(1)
- CSS相邻同胞选择器
- java 将文件中的姓名“李善”改为“王山”
- oracle没有create or replace table
- [模板]树的重心
- Rxjava这一篇就够了,墙裂推荐
- 痛苦的Caffe配置之路(win10 教育版+vs2015+cmaker+cpu_only+python接口)
- AVG PC Tuneup 2017(顶级系统优化大师)官方中文破解版64位V16.76.3.18604下载 | 内置avg pc tuneup 2017激活码
- C/c++编译时的def文件
- CSS3同胞选择器
- java常见异常总结
- activity 的启动过程
- Spring学习笔记(三)- Spring IoC容器启动源码分析