求一个可以输出所有拓扑排序的代码或者思路,记住是所有可能的拓扑排序????????????????

如题所述

伪代码:

// 参数g为图,nodes为已经排序的顶点
TopologicalSort(Graph g, List nodes) {
g中所有没有前驱的顶点放入队列q;
while(q不为空) {
q中顶点出队,设为v;
复制nodes生成nodes的副本,并把v加入nodes的副本;
复制g生成g的副本,g的副本删去v和v发出的有向边;
if (g的副本中没有顶点) {
输出nodes; // node为最终的排序
} else {
TopologicalSort(g的副本, nodes的副本);//递归对剩下的图排序
}
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-18
你可以对每个点标记它是第几层,初始的为第一层,这样按层输出,对于每一层他的方案是排列数。不知道对不对追问

不用想就知道错哦

追答

确实有bug,可不可以先找几个连通块(这些连通块排列),然后把优先级最低的去掉(最后才能处理的点,他们可以排列),又成了同样的问题,可以否?