樹的最大獨立集 (AP325 P-8-8)
1.0s 256M輸入一棵有 \(n\) 個點的樹,我們要挑選一群彼此不相鄰的點,而且挑選的點越多越好。請計算最多可以挑多少點。以下圖為例,我們可以挑 \(\{0,3,4,5,6,7\}\) 共 \(6\) 點,沒有辦法挑出更多的不相鄰的點。
輸入格式
第一行是正整數 \(n\),代表點數,點以 \(0 \sim n-1\) 編號,\(0\) 是根。第二行有 \(n-1\) 個整數 \(p(1), p(2), \ldots, p(n-1)\),依序是編號 \(1 \sim n-1\) 各點的 parent,相鄰數字以空白間隔。
限制
- \(2 \le n \le 10^5\)。
- \(0 \le p(i) \le n-1\),\(p(i) \ne i\);保證輸入是一棵以 \(0\) 為根的樹。注意 \(p(i)\) 的編號不一定比 \(i\) 小。
輸出格式
最多可以挑選幾點。
評分說明
每筆計分測資獨立計分,每筆 5 分,共 100 分;範例不計分。
範例輸入 1
9
0 0 1 1 2 2 2 6
範例輸出 1
6
範例輸入 2
8
0 1 2 3 3 2 2
範例輸出 2
5
題目來源
本題出自中正大學吳邦一教授所著《AP325-從 APCS 實作題檢測三級到五級》(v1.5)第 8 章 P-8-8,第 295 頁;經作者同意於 AACPOJ 免費公開。教材下載:AP325 講義(Google Drive);Python 版:AP325-Python(HackMD)。
登入後即可撰寫程式並提交評測。
登入