1. 輸出字典序最小的拓撲序:在BFS算法方法中用優先隊列
2.
題意:
N個點M條邊 DAG
求刪去每個點後1-n最短路
N,M 3e5
做法:
首先在DAG中可以跑拓撲排序,跑完拓撲排序有什麼好處呢?
拓撲序上的一個點k作爲劃分線,前半段的點的集合設爲x,後半段點的集合設爲y,那麼從點1到x中的任意一個點的最短路,一定沒有經過k點;同理,從y中任意一個點到n一定也沒經過k點。
那麼這道題只要做一個預處理
1 .從1到其他點的最短路dis數組
2. 以及在反圖上跑從n到其他點的dis2數組
那麼去掉點k的最短路爲min(W(u,v) + dis[u] + dis2[v]) (u爲X集合的點, v爲Y集合的點,從中取Min);
但這樣複雜度肯定有大問題。怎麼做呢,m條邊,對於每條邊w(u,v)我們將u,v之間的拓撲序的點區間取min(線段樹)就可以了,複雜度mlogn。
無代碼,找不到提交鏈接。