Weights Assignment For Tree Edges 树,拓扑序(1500)
生活随笔
收集整理的這篇文章主要介紹了
Weights Assignment For Tree Edges 树,拓扑序(1500)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題意 :
- 給定n個結點的樹和序列bbb和ppp,bib_ibi?表示i結點的父節點,其中broot=rootb_{root}=rootbroot?=root,現在要給樹上的每個邊賦正權值,使得每個結點到根的距離distidist_{i}disti?滿足p的排序,即如果在p數組中,i點位置在j點前面,則disti<distjdist_{i}<dist_{j}disti?<distj?
- 如果可行,輸出每條邊的權值,否則,輸出-1
思路 :
- 因為每條邊都賦正值,那么考慮一個結點,它的排名不可能比父節點靠前,也就是說p數組滿足拓撲序
- 對于p=[3,1,2,5,4]p=[3,1,2,5,4]p=[3,1,2,5,4],構造dist3=0dist_3=0dist3?=0(第一個肯定是根結點),dist1=2,dist2=3,...,dist_1=2,dist_2=3, ... ,dist1?=2,dist2?=3,...,滿足枚舉的順序,這個是結點到根的距離,只要記錄一下父節點到根的距離,相減就是這個邊的權值
- 因此,按照p數組的順序從第一個非根結點開始枚舉每個點,如果枚舉到的這個點的父節點排名比它低(dist數組值為-1),直接return輸出-1,否則,當前這個結點dist數組值為i,ans數組記錄這個點到父節點這條邊的邊權,就是當前這個點到根的距離減去父節點到根的距離
總結
以上是生活随笔為你收集整理的Weights Assignment For Tree Edges 树,拓扑序(1500)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Polycarp Recovers th
- 下一篇: Escape The Maze (eas