1. 程式人生 > >AT3611 Tree MST 點分治+最小生成樹

AT3611 Tree MST 點分治+最小生成樹

當前 font text 實現 生成 代碼 中心 kruscal mst

正解:點分治+最小生成樹

解題報告:

傳送門!

然後這題麻油翻譯,,,所以這邊的建議是先說下題意呢親

所以題意大概就是說,給一棵n個節點的樹,樹上每個點都有個權值,然後構造一個完全圖,(u,v)之間連邊的權值為dis(u,v)+w[u]+w[v],求最小生成樹權值和

然後這題就考慮點分治昂,基本套路不說,說說具體實現

就對當前中心x,求出它的子樹中所有點到它的距離dis,然後找到所有距離中的min,把所有連邊和它相加放入候選名單中

最後跑個kruscal就好

具體正確性我等下證明趴QAQ?

然後點分治內部的實現還有一種,也挺妙的,就是直接在當前這個重心的子樹中跑個最小生成樹,只有最小生成樹上的點要加入候選名單中(*似乎是這樣兒的?不記得了下午嘗試證明下趴QAQ

等下放代碼QAQ

AT3611 Tree MST 點分治+最小生成樹