图论--树的重心(DFS) 模板
const int maxn=500005;
int tot=0,n;
int ans,size;
int sx[maxn],head[maxn];
int vis[maxn];
struct edge
{
    int to,next;
} eg[maxn];
void add(int u,int v)
{
    eg[tot].to=v;
    eg[tot].next=head[u];
    head[u]=tot++;
}
void init()
{
    tot=0;
    memset(head,-1,sizeof(head));
    memset(vis,0,sizeof(vis));
}
void dfs(int u)
{
    vis[u]=1;
    sx[u]=1;
    int tmp=0;
    for(int i=head[u]; i!=-1; i=eg[i].next)
    {
        int v=eg[i].to;
        if(!vis[v])
        {
            dfs(v);
            sx[u]+=sx[v];
            tmp=max(tmp,sx[v]);
        }
    }
    tmp=max(tmp,n-sx[u]);
    if(size>tmp||size==tmp&&ans>u)
    {
        ans=u;
        size=tmp;
    }
}
int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        init();
        int u,v;
        scanf("%d",&n);
        for(int i=1; i<n; i++)
        {
            scanf("%d%d",&u,&v);
            add(u,v);
            add(v,u);
        }
        size=INF;
        dfs(1);
        printf("%d %d\n",ans,size);
    }
}图论--树的重心(DFS) 模板的更多相关文章
- POJ 1655.Balancing Act-树的重心(DFS) 模板(vector存图)
		Balancing Act Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 17497 Accepted: 7398 De ... 
- 求树的重心 DFS
		树的重心 何谓重心 树的重心:找到一个点,其所有的子树中最大的子树节点数最少,那么这个点就是这棵树的重心,删去重心后,生成的多棵树尽可能平衡. 树的重心可以通过简单的两次搜索求出,第一遍搜索求出每个结 ... 
- 图论--树的直径--DFS+树形DP模板
		#include <iostream> #include <cstring> using namespace std; //maxv:源点能到的最远点,maxdis:最远点对应 ... 
- 树的重心(DFS)
		;vector< ; i < v[node].size() ; i++){ , ; i <= n- ; i++){ cin >> a >> b; v[a].p ... 
- POJ 1655 Balancing Act【树的重心模板题】
		传送门:http://poj.org/problem?id=1655 题意:有T组数据,求出每组数据所构成的树的重心,输出这个树的重心的编号,并且输出重心删除后得到的最大子树的节点个数,如果个数相同, ... 
- POJ1655 Balancing Act (树的重心)
		求树的重心的模板题,size[u]维护以u为根的子树大小,f[u]表示去掉u后的最大子树. 1 #include<cstdio> 2 #include<iostream> 3 ... 
- 『Balancing Act 树的重心』
		树的重心 我们先来认识一下树的重心. 树的重心也叫树的质心.找到一个点,其所有的子树中最大的子树节点数最少,那么这个点就是这棵树的重心,删去重心后,生成的多棵树尽可能平衡. 根据树的重心的定义,我们可 ... 
- 点分治模板(洛谷P4178 Tree)(树分治,树的重心,容斥原理)
		推荐YCB的总结 推荐你谷ysn等巨佬的详细题解 大致流程-- dfs求出当前树的重心 对当前树内经过重心的路径统计答案(一条路径由两条由重心到其它点的子路径合并而成) 容斥减去不合法情况(两条子路径 ... 
- 【CSP-S 2019】【洛谷P5666】树的重心【主席树】【树状数组】【dfs】
		题目: 题目链接:https://www.luogu.com.cn/problem/P5666 小简单正在学习离散数学,今天的内容是图论基础,在课上他做了如下两条笔记: 一个大小为 \(n\) 的树由 ... 
随机推荐
- 37.2 net-- tcp传输 ServerSocket、Socket
			一.打开server端 package day35_net_网络编程.tcp传输; import java.io.IOException; import java.io.InputStream; im ... 
- hadoop(八)集群namenode启动ssh免密登录(完全分布式五)|10
			前置章节:hadoop集群配置同步(hadoop完全分布式四)|10 启动namenode之前: 1. 先查看有无节点启动,执行jps查看,有的话停掉 [shaozhiqi@hadoop102 ~]$ ... 
- 弱智破解法——用python破解WIFI
			前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:李嘉图 PS:如有需要Python学习资料的小伙伴可以加点击下方链接自 ... 
- K - Downgrade Gym - 101775K
			题目大意:一天不玩相当于A-B中将A转换为经验值,B舍弃掉,然后A=1,在通过升级所需要的经验值来判断可以升几级 题目连接:https://codeforces.com/gym/101775/prob ... 
- 分析 Nanocore
			Nanocore是一个非常强大的木马控制系统,当Nanocore木马运行时,我们发现Windows Defender可以很好地识别威胁.本文的目的是分析Nanocore的传播方式,它是怎样感染Wind ... 
- Jmeter与LoadRunner的比较
			一.与Loadrunner的比较相似点 1.Jmeter的架构跟loadrunner原理一样, 都是通过中间代理,监控&收集并发客户端发现的指令,把他们生成脚本,再发送到应用服务器,再监控服务 ... 
- Redis 的 maxmemory 和 dbnum 默认值都是多少?对于最大值会有限制吗?
			一.Redis 的默认配置 了解 Redis 的都知道,Redis 服务器状态有很多可配置的默认值. 例如:数据库数量,最大可用内存,AOF 持久化相关配置和 RDB 持久化相关配置等等.我相信,关于 ... 
- Java代码生成器加入postgresql数据库、HikariCP连接池、swagger2支持!
			目录 前言 PostgreSql VS MySql HikariCP VS Druid Swagger2 自定义参数配置一览 结语 前言 最近几天又抽时间给代码生成器增加了几个新功能(预计今晚发布 ... 
- Web中间件常见漏洞
			IIS Internet Information Services--windows 解析漏洞 IIS 6.x 基于文件名:该版本默认会将 *.asp;.jpg 此种格式的文件名,当成 Asp 解析, ... 
- python学习20之面向对象编程高级
			'''''''''1.动态绑定:对于一个类,我们可以对它的实例动态绑定新的属性或方法.为了使所有的实例均可以使用动态绑定的属性和方法,我们也可以采用对类直接动态绑定'''class Student() ... 
