1.用優先佇列維護
2.從後往前排序, 每次判斷節點的出度, 出度 == 0 , 進入優先佇列.
3.用vector陣列做鄰接表表示整個圖
#include
#include
#include
#include
#include
using
namespace
std;
const
int maxn = 30005;
vector
per[maxn]; //用鄰接表儲存圖
int out[maxn]; //每個節點的出度
int n, m; //n:節點個數, m:邊的個數
int ans[maxn]; //拓撲排序結果
bool topo()
}return cnt == 0; //判斷是否存在環路
}
#include
#include
#include
#include
#include
#include
using
namespace
std;
const
int maxn = 1001;
int per[maxn][maxn]; //鄰接矩陣儲存
int in[maxn];
stack
sta;
vector
ans;
int n, m;
bool topo()}}
return ans.size() == n;
}
倍增字典序 拓撲排序 尋找數字
這裡介紹一種雜湊 倍增判斷字典序的方法,比較套路但不容易想到。設f x i f x i f x i 表示節點 x xx 往回跳 2 i2 i 2i所到達的點,w x i w x i w x i 表示節點 x xx 到 f x i f x i f x i 路徑中的最小值。那麼我們對於節點 u uu 和...
優先佇列實現字典序最小的拓撲排序
煩人的依賴 時間限制 c c 1秒,其他語言2秒 空間限制 c c 262144k,其他語言524288k 64bit io format lld 題目描述 ubuntu20.04 正式發布了,zls 是乙個作死小能手,於是他決定嘗試一下這個船新版本。好不容易裝完系統,zls 想要給他的系統裝一些常...
字典樹 拓撲排序 第一!
bessie一直在研究字串。她發現,通過改變字母表的順序,她可以按改變後的字母表來排列字串 字典序大小排列 例如,bessie發現,對於字串串 omm moo mom 和 ommnom 她可以使用標準字母表使 mom 排在第乙個 即字典序最小 她也可以使用字母表 abcdefghijklonmpqr...