傳送門!spa
而後這題麻油翻譯,,,因此這邊的建議是先說下題意呢親翻譯
因此題意大概就是說,給一棵n個節點的樹,樹上每一個點都有個權值,而後構造一個徹底圖,(u,v)之間連邊的權值爲dis(u,v)+w[u]+w[v],求最小生成樹權值和get
而後這題就考慮點分治昂,基本套路不說,說說具體實現io
就對當前中心x,求出它的子樹中全部點到它的距離dis,而後找到全部距離中的min,把全部連邊和它相加放入候選名單中margin
最後跑個kruscal就好di
具體正確性我等下證實趴QAQ?co
而後點分治內部的實現還有一種,也挺妙的,就是直接在當前這個重心的子樹中跑個最小生成樹,只有最小生成樹上的點要加入候選名單中生成
等下放代碼QAQnew