給定一顆樹,樹中包含n個結點(編號1~n)和n-1條無向邊。
請你找到樹的重心,並輸出將重心刪除後,剩餘各個連通塊中點數的最大值。
重心定義:重心是指樹中的乙個結點,如果將這個點刪除後,剩餘各個連通塊中點數的最大值最小,那麼這個節點被稱為樹的重心。
輸入格式
第一行包含整數n,表示樹的結點數。
接下來n-1行,每行包含兩個整數a和b,表示點a和點b之間存在一條邊。
輸出格式
輸出乙個整數m,表示重心的所有的子樹中最大的子樹的結點數目。
資料範圍
輸入樣例
9
1 21 7
1 42 8
2 54 3
3 94 6
輸出樣例:4
**#include
#include
#include
using
namespace std;
typedef
long
long ll;
typedef
unsigned
long
long ull;
typedef pair pii;
const
int n =
1e5+10;
int ans =
0x3f3f3f3f
;int n;
vectorvec[n]
;int vis[n]
;int
dfs(
int now)
} res =
max(n - sum, res)
;//父節點子樹大小
ans =
min(ans, res)
;// 最大子樹的最小值
return sum;
}int
main()
dfs(1)
; cout <
< ans <
< endl;
}
AcWing 846 樹的重心
大佬的題解 題目鏈結 這道題給的標籤竟然是 樹與圖的深度優先遍歷 這是神馬玩意,然後我點進去看了一下,果然還是沒有思路,然後看了y總,如願以償,y總yyds,我看懂了,然後我就認真再看了一遍題。我覺得好像是求子樹問題,然後我就有了思路。大佬的題解其實講的很清楚,最主要的是靠自己的想象,最關鍵的幾個變...
ACWing846 樹的重心
dfs,一次遍歷,求出每個結點去除該點後的最大連通塊的個數,同時更新ans 全域性變數存放最終結果 1 include2 include3 include4 using namespace std 56 const int n 100010 7 int h n e n 2 ne n 2 idx 樹為...
AcWing 846 樹的重心
目錄dfs演算法求解 參考文章 給定一顆樹,樹中包含 n 個結點 編號 1 n 和 n 1 條無向邊。請你找到樹的重心,並輸出將重心刪除後,剩餘各個連通塊中點數的最大值。重心定義 重心是指樹中的乙個結點,如果將這個點刪除後,剩餘各個連通塊中點數的最大值最小,那麼這個節點被稱為樹的重心。輸入格式 第一...