POJ 3107 Godfather (树的重心)
题目地址:POJ 3107
还是裸的树的重心,只不过这个要求将所有的重心都输出。很简单。
代码如下:
#include <iostream>
#include <string.h>
#include <math.h>
#include <queue>
#include <algorithm>
#include <stdlib.h>
#include <map>
#include <set>
#include <stdio.h>
#include <time.h>
using namespace std;
#define LL __int64
#define pi acos(-1.0)
//#pragma comment(linker, "/STACK:1024000000")
#define root 1, n, 1
#define lson l, mid, rt<<1
#define rson mid+1, r, rt<<1|1
const int mod=1e9+7;
const int INF=0x3f3f3f3f;
const double eqs=1e-9;
const int MAXN=50000+10;
struct node {int v, next;
} edge[MAXN<<1];
int head[MAXN], cnt, min1, n, num;
int sum[MAXN], ans[MAXN];
void add(int u, int v)
{edge[cnt].v=v;edge[cnt].next=head[u];head[u]=cnt++;
}
void init()
{memset(head,-1,sizeof(head));cnt=0;min1=INF;
}
void dfs(int u, int fa)
{int max1=0, i, tot=0;sum[u]=1;for(i=head[u]; i!=-1; i=edge[i].next) {int v=edge[i].v;if(v==fa) continue ;dfs(v,u);sum[u]+=sum[v];max1=max(max1,sum[v]);tot+=sum[v];}max1=max(max1,n-tot-1);if(min1>max1) {min1=max1;num=0;ans[num++]=u;}else if(min1==max1) {ans[num++]=u;}
}
int main()
{int u, v, i;while(scanf("%d",&n)!=EOF) {init();for(i=1; i<n; i++) {scanf("%d%d",&u,&v);add(u,v);add(v,u);}dfs(1,-1);sort(ans,ans+num);for(i=0; i<num; i++) {printf("%d",ans[i]);if(i!=num-1) printf(" ");else puts("");}}return 0;
}
POJ 3107 Godfather (树的重心)相关推荐
- POJ3107 Godfather树的重心
POJ3107 Godfather 树的重心模板题 讲解在注释里,树的重心还是比较好理解的 #include<cstdio> #include<iostream> using ...
- POJ 3107 - Godfather
本题与POJ 1655的区别是要把所有重心的点按顺序输出出来. // poj3107 Godfather #include <cstdio> #include <cstring> ...
- POJ 1655 求树的重心(树形dp)
题目链接 树的重心: 若树上的一个节点满足其所有的子树中最大的子树节点数最少,那么这个点就是这棵树的重心. 1.任选一个点为根,只要统计出每个点的子树大小,就能很快求出每个点子树节点的数量的最大值. ...
- POJ 3107 Godfather(树形DP(找重心))
任重而道远 Description Last years Chicago was full of gangster fights and strange murders. The chief of t ...
- Poj 1655 【树的重心】
题目链接:http://poj.org/problem?id=1655 题解: 设sum[i]为以i为根结点的树上有多少个结点,maxsum[i]为去掉i结点导致的森林中最大的树有多大 一开始建树时是 ...
- POJ 3107 Godfather 笔记
公司的从属关系呈树状,n 对从属关系,每对从属关系不能确定谁的官职大.老板在公司中职务最大且只有一个,已知删除老板后的最大连通组件的大小最小.列举可能的老板.
- 【树形DP】树的重心详解+多组例题详解
目录 定义: 性质: 算法分析: POJ 1655 Balancing Act(求重心) POJ 3107 Godfather P1364 医院设置(树形DP) 定义: 树的重心也叫树的质心.对于一棵 ...
- 树的直径,树的重心,树的分冶
主要是利用了反证法: 假设 s-t这条路径为树的直径,或者称为树上的最长路 现有结论,从任意一点u出发搜到的最远的点一定是s.t中的一点,然后在从这个最远点开始搜,就可以搜到另一个最长路的端点,即用两 ...
- Godfather POJ - 3107 (求树的重心)
题目链接 题意:给定一棵树,要求按编号从小到大输出重心. 树的重心: 定义:找到一个点满足其所有的子树中最大的子树节点数最少,那么这个点就算是树的重心. 性质: 1.删除重心后所得的所有子树,节点数不 ...
最新文章
- QT小例子GUI(主)线程与子线程之间的通信
- 电子测量与仪器第四版pdf_固定资产管理系统_资产分类名称(电子和通信测量分析仪器篇)...
- [react] 请说说什么是useImperativeHandle?
- 【李宏毅2020 ML/DL】补充:Structured Learning: Introduction Structured Linear Model
- 算法:回溯十四 Restore IP Addresses数字字符串还原为IP地址(2种解法)
- idea java EclipseFormatter代码格式化模板
- 十大免费SSL证书:网站免费添加HTTPS加密
- 新浪微博与微信公众号开发总结
- 网络爬虫法即将出台!!!小爬怡情,大爬over
- linux 搭建mycat
- 扩展RBAC用户角色权限设计方案(转载)
- 怎么保存python制作的饼图_Scribus中的Python脚本:制作饼图
- linux io apic,linux-kernel – IO-APIC级别与PCI-MSI-X之间的差异
- Mac键盘不起作用?苹果电脑键盘失灵解决教程
- 2021年“亿级”体量产品的五大发展趋势
- 可汉学院python_18-04-18 回顾 可汗学院:计算数论
- java找茬_一起来找茬(1)-开发写的神奇左连接
- 1.线性回归(Tensorflow)
- 风力发电控制系统的matlab,基于MATLAB的风力发电系统设计ppt课件
- 国货新品牌的量产之路!徒有产能的工厂老板也能拼出自己的品牌?