栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

acwing 846 树的重心

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

acwing 846 树的重心

#include
#include
using namespace std ;
const int N = 1e5 + 10 ;
int n ;
int h[N] , e[2*N] , idx ,  ne[2 * N] ;
int ans = N ;
bool st[N] ;
void add(int a , int b)
{
    e[idx] = b , ne[idx] = h[a] , h[a] = idx ++ ;
}
int dfs(int u)
{
    int count = 1 , res = 0 ;
    st[u] = true ;
    for(int i = h[u] ; i!= -1 ; i = ne[i])
    {
        int s = e[i] ;
        if(!st[s])
        {
            int j = dfs(s) ;
            res = max(j , res) ;
            count += j ;
        }
    }
    res = max(res , n - count) ;
    ans = min(ans , res) ;
    return count ;
}

int main()
{
    cin >> n ;
    memset(h , -1 , sizeof h) ;
    for(int i = 0 ; i < n - 1 ; i++)
    {
        int a , b ;
        cin >> a >> b ;
        add(a,b) ,add(b,a) ;
    }
    dfs(1) ;
    cout << ans << endl ;
    return 0 ;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/715171.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号