acwing 846 树的重心

acwing 846 树的重心,第1张

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 ;
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5711813.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存