POJ1655 Balancing Act (树的重心)
2024-09-08 03:50:44
求树的重心的模板题,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 }
最新文章
- MVC 后台管理框架 FineUIMvc 在线示例
- #研发中间件介绍#异步消息可靠推送Notify
- certbot+nginx (仅用作个人纪录)
- html background 背景颜色美化 类似毛玻璃
- 5.4 String
- JS--传统事件模型的问题
- ionicPopup弹出列表选择对话框
- 自制单片机之十二……AT89C2051烧写器的制做与调试
- (大数据工程师学习路径)第一步 Linux 基础入门----用户及文件权限管理
- [知了堂学习笔记]_MVC设计模式与JavaWEB三层架构
- jQuery相关用法
- hdu 2647 Reward(拓扑排序+反图)
- 技术课堂】如何管理MongoDB数据库?
- Phoenix安装配置
- 绝命毒师第五季/全集Breaking Bad迅雷下载
- Linux(CentOS)之-性能监控
- Codewars, Leetcode, Hackerrank. Online Judges Reviews
- Codeforces Round #302 解题报告
- [Todo]Redis &; Mysql可以看的书籍
- 如何学习web开发环境搭建和脚手架
热门文章
- SAM复杂度证明
- Linux系列之压缩命令
- 常用类--String
- Linux操作系统学习(运维必会)
- 大数据Hadoop入门教程 | (二)Linux
- TCP实现多个客户端发送数据给服务器端
- 垃圾收集器 参阅<;<;深入理解JAVA虚拟机>;>;
- PerfView专题 (第十一篇):使用 Diff 功能洞察 C# 内存泄漏增量
- 第七十九篇:数组方法(forEach,some,every,reduce)
- RTSP播放器开发填坑之道