題目連結
題目大意
給出一棵樹,樹上每個節點都有一種顏色,求所有顏色相同的節點兩兩之間距離的總和。
題解
想來寫題解主要是看了一下官方解法都寫的需要“重心分解”,應該是對應中文語境下的樹的點分治。實際上點分治寫起來很費事,可以用啟發式合併替代。
具體來說,dfs時每個節點都維護一個資料結構(平衡樹線段樹都可以)用來統計子樹下各個顏色節點的數量,維護時啟發式合併即可,缺點是複雜度應該是兩個logn的。
為了統計答案,除了維護節點數量還需要一邊統計他們的深度之和。
程式碼連結(用小號打的hhh)