一棵n個點的有根樹,1號點為根,相鄰的兩個節點之間的距離為1。樹上每個節點i對應乙個值k[i]。每個點都有乙個顏色,初始的時候所有點都是白色的。
你需要通過一系列操作使得最終每個點變成黑色。每次操作需要選擇乙個節點i,i必須是白色的,然後i到根的鏈上(包括節點i與根)所有與節點i距離小於k[i]的點都會變黑,已經是黑的點保持為黑。問最少使用幾次操作能把整棵樹變黑。
//先記一遍每個子樹的最大向上高度
//然後對每個葉子節點染色
//遇到沒染色的節點,去子樹里找最大的高度,更新高度
#includeusing namespace std;
const int maxn=1e5+100;
int n,k[maxn];
vectorg[maxn];
int dep[maxn];
int ans;
int h[maxn];//h_x表示x子樹內可以往上走的最高高度
int f[maxn];//f_x表示x子樹內當前往上走的最高高度
void dfs (int x,int pre)
}void dfs1 (int x,int pre)
if (min<=dep[x])
else
}int main ()
for (int i=1;i<=n;i++) scanf("%d",k+i),f[i]=1e9;
dfs(1,0);
dfs1(1,0);
printf("%d\n",ans);
}
Nowcoder 黑白樹 樹形dp
一棵n個點的有根樹,1號點為根,相鄰的兩個節點之間的距離為1。樹上每個節點i對應乙個值k i 每個點都有乙個顏色,初始的時候所有點都是白色的。你需要通過一系列操作使得最終每個點變成黑色。每次操作需要選擇乙個節點i,i必須是白色的,然後i到根的鏈上 包括節點i與根 所有與節點i距離小於k i 的點都會...
NC13249 黑白樹 樹上貪心
一棵n個點的有根樹,1號點為根,相鄰的兩個節點之間的距離為1。樹上每個節點i對應乙個值k i 每個點都有乙個顏色,初始的時候所有點都是白色的。你需要通過一系列操作使得最終每個點變成黑色。每次操作需要選擇乙個節點i,i必須是白色的,然後i到根的鏈上 包括節點i與根 所有與節點i距離小於k i 的點都會...
黑白樹 樹形 貪心
題目描述 一棵n個點的有根樹,1號點為根,相鄰的兩個節點之間的距離為1。樹上每個節點i對應乙個值k i 每個點都有乙個顏色,初始的時候所有點都是白色的。你需要通過一系列操作使得最終每個點變成黑色。每次操作需要選擇乙個節點i,i必須是白色的,然後i到根的鏈上 包括節點i與根 所有與節點i距離小於k i...