题目链接:http://poj.org/problem?id=1655

题解:

设sum[i]为以i为根结点的树上有多少个结点,maxsum[i]为去掉i结点导致的森林中最大的树有多大

一开始建树时是取小的点指向大的点,然后一直WA后来发现这样建树是有问题的,可能会有(1,3)(2,3)这种出现1->3,2->3导致1、2不联通的情况出现。

#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<cmath>
#include<stdlib.h>
#include <string.h>
#include<queue>
#include<set>
#include<map>
#include<stack>
#include<time.h>
#include<sstream>
using namespace std;
#define MAX_N 20005
#define inf 0x7f7f7f7f
#define LL long long
#define ull unsigned long long
const LL INF = 1e18;
//const double Pi = acos(-1);
const int mod = 1e4+7;
typedef pair<int, int>P;vector<int>G[MAX_N];
int sum[MAX_N];
int maxSum[MAX_N];
int n;
void dfs(int u, int pre)
{sum[u] = 1;maxSum[u] = 0;for(int i=0; i<G[u].size(); i++) {int v = G[u][i];if(v == pre)continue;dfs(v, u);sum[u] += sum[v];maxSum[u] = max(maxSum[u], sum[v]);}maxSum[u] = max(maxSum[u], n-sum[u]);
}
int main()
{int t;cin >> t;while(t--) {cin >> n;for(int i=1; i<=n; i++)G[i].clear();for(int i=1; i<n; i++) {int a, b;scanf("%d%d", &a, &b);G[a].push_back(b);G[b].push_back(a);}dfs(1, 0);int idx;int ans = inf;for(int i=1; i<=n; i++) {if(ans > maxSum[i]) {ans = maxSum[i];idx = i;}}printf("%d %d\n", idx, ans);}
}

Poj 1655 【树的重心】相关推荐

  1. poj 1655 树的重心 define注意事项

    http://blog.csdn.net/acdreamers/article/details/16905653 题意:给定一棵树,求树的重心的编号以及重心删除后得到的最大子树的节点个数size,如果 ...

  2. poj 1655 树的重心

    题目链接:点击打开链接   题意:给了一个树,去掉一个结点后的子树的节点数的最大值即平衡值,求最小的平衡值,如果平衡值相同,使节点号最小.              思路:其实也就是求树的重心.树的重 ...

  3. Godfather POJ - 3107 树的重心

    题目要求输出给出树的所有重心. 有个结论:一棵有根树至多有两个重心. #include<iostream> #include<cstring> using namespace ...

  4. POJ 1655 Balancing Act (树的重心)

    题目链接:http://poj.org/problem?id=1655 题意: 求树的重心(最小序号),以及去掉重心后子树节点最大是多少.(树的重心定义为:找到一个点,其所有的子树中最大的子树节点数最 ...

  5. POJ 1655 Balancing Act (树的重心 + DFS)

    传送门:POJ 1655 题目大意: 求树的重心,如果有多个重心则输出根节点编号最小的一个.树的重心也叫树的质心.找到一个点,其所有的子树中最大的子树节点数最少,那么这个点就是这棵树的重心,删去重心后 ...

  6. POJ 1655 Balancing Act[树的重心/树形dp]

    Balancing Act 时限:1000ms Description Consider a tree T with N (1 <= N <= 20,000) nodes numbered ...

  7. POJ - 1655 Balancing Act(树的重心)

    题目链接:点击查看 题目大意:给一个树,删除其中一个点就会形成一个森林,点的平衡度为删除了这个节点后,所形成多个树,其中组成树的节点最多,节点个数就是那个平衡度. 题目分析:求树的重心,模板题: 树的 ...

  8. POJ 1655 求树的重心(树形dp)

    题目链接 树的重心: 若树上的一个节点满足其所有的子树中最大的子树节点数最少,那么这个点就是这棵树的重心. 1.任选一个点为根,只要统计出每个点的子树大小,就能很快求出每个点子树节点的数量的最大值. ...

  9. POJ 3107 Godfather (树的重心)

    题目地址:POJ 3107 还是裸的树的重心,只不过这个要求将所有的重心都输出.很简单. 代码如下: #include <iostream> #include <string.h&g ...

  10. POJ - 4045 Power Station(树形dp/树的重心)

    题目链接:点击查看 题目大意:给出一个n个节点的树,我们需要选出一个节点,到其余任何节点的距离和最小 题目分析:这个题我的第一反应是用树的重心,先求出来符合条件的点,然后再跑一遍dfs求距离,最后输出 ...

最新文章

  1. js 实现多选框(复选框) 和单选框,下拉框功能完整示例代码附效果图
  2. hdu5094(上海邀请赛E) 状态压缩bfs:取钥匙开门到目的地
  3. Java 8 - 收集器Collectors_实战
  4. Scala函数式编程:偏函数
  5. python打包的exe开机自动启动(windows)
  6. Laravel 使用 Aliyun OSS 云存储
  7. 全球首发|阿里云正式推出云数据库Redis6.0版本
  8. 遵循Java EE标准体系的开源GIS服务平台之三:数据发布与访问
  9. Python:关于装饰器的理解
  10. 根据网卡MAC地址查询厂商信息
  11. 最大流应用问题(深大算法实验6)报告+代码
  12. Android 特效大全代码资源——源码
  13. (孔乙己茴香豆的的“茴”字有几种写法)三栏布局两边固定中间自适应
  14. 计算机金融学校排名2015,金融学院2015级各专业排名情况统计表
  15. graphs菜单_Wireshark自带工具IO Graphs分析接收数据平滑度案例
  16. 从头到尾彻底解析Hash 表算法
  17. NAS HomeAssistant
  18. ayit第十周训练g题
  19. 1149:最长单词2
  20. Android - TextView Ellipsize属性

热门文章

  1. QQ群文件下载速度慢-解决办法
  2. The 3rd SMUCTF Office WriteUp
  3. [BUGKU] [REVERSE] 逆向入门
  4. PS制作透明的BMP图片
  5. 空间参考系统据库srs.db的使用
  6. 如何在iPhone手机上安装ipa(应用安装包)
  7. 二项式系数(枚举+二分+二项式定理)
  8. 每日一题——分发糖果
  9. Unity中单点和多点触控
  10. 从Django的SECTET_KEY到代码执行