輸入:第一行為點數n和各連線邊數m
接下來m行寫某一條有向邊的起始點和終止點
輸出:拓撲排序所有方案和方案種數
sample input
9 10sample output0 11 3
2 43 2
3 65 4
6 57 5
8 68 7
0 1 3 2 8 6 7 5 4**:0 1 3 2 8 7 6 5 4
0 1 3 8 2 6 7 5 4
0 1 3 8 2 7 6 5 4
0 1 3 8 6 2 7 5 4
0 1 3 8 6 7 2 5 4
0 1 3 8 6 7 5 2 4
0 1 3 8 7 2 6 5 4
0 1 3 8 7 6 2 5 4
0 1 3 8 7 6 5 2 4
0 1 8 3 2 6 7 5 4
0 1 8 3 2 7 6 5 4
0 1 8 3 6 2 7 5 4
0 1 8 3 6 7 2 5 4
0 1 8 3 6 7 5 2 4
0 1 8 3 7 2 6 5 4
0 1 8 3 7 6 2 5 4
0 1 8 3 7 6 5 2 4
0 1 8 7 3 2 6 5 4
0 1 8 7 3 6 2 5 4
0 1 8 7 3 6 5 2 4
0 8 1 3 2 6 7 5 4
0 8 1 3 2 7 6 5 4
0 8 1 3 6 2 7 5 4
0 8 1 3 6 7 2 5 4
0 8 1 3 6 7 5 2 4
0 8 1 3 7 2 6 5 4
0 8 1 3 7 6 2 5 4
0 8 1 3 7 6 5 2 4
0 8 1 7 3 2 6 5 4
0 8 1 7 3 6 2 5 4
0 8 1 7 3 6 5 2 4
0 8 7 1 3 2 6 5 4
0 8 7 1 3 6 2 5 4
0 8 7 1 3 6 5 2 4
8 0 1 3 2 6 7 5 4
8 0 1 3 2 7 6 5 4
8 0 1 3 6 2 7 5 4
8 0 1 3 6 7 2 5 4
8 0 1 3 6 7 5 2 4
8 0 1 3 7 2 6 5 4
8 0 1 3 7 6 2 5 4
8 0 1 3 7 6 5 2 4
8 0 1 7 3 2 6 5 4
8 0 1 7 3 6 2 5 4
8 0 1 7 3 6 5 2 4
8 0 7 1 3 2 6 5 4
8 0 7 1 3 6 2 5 4
8 0 7 1 3 6 5 2 4
8 7 0 1 3 2 6 5 4
8 7 0 1 3 6 2 5 4
8 7 0 1 3 6 5 2 4
sum:52
1 #include 2 #include 3 #include 4using
namespace
std;
5int
n,m;
6int s[100][100]; //
鄰接矩陣,用於儲存圖的結構
7int visit[100]; //
頂點標誌
8int indegree[100]; //
各個頂點的入度
9int ans[100
];10
int sum=0; //
記錄拓撲排序總數
11void dfs(int num) //
num記錄當前已經訪問的頂點個數 12
2122
for (i=0;i)
2728 visit[i]=1; //
該入度為0的點標記訪問過
29 ans[num]=i; //
儲存值
30 dfs(num+1); //
以訪問點數+1
3132
for (k=0;k//
回溯,恢復現場,將入度重新加一,並且將該頂點標記為未訪問
33if (s[i][k]) indegree[k]++;34}
35 visit[i]=0; //
回溯標誌 方便下一次for迴圈使用
36//
ans沒有必要回溯,因為後續的值可以直接覆蓋 37}
38}39return;40
}4142int
main()
5556 dfs(0
);57 cout<
sum:
"<
58return0;
59 }
拓撲排序 kahn演算法及dfs的拓撲排序
有個人的家族很大,輩分關係很混亂,請你幫整理一下這種關係。給出每個人的孩子的資訊。輸出乙個序列,使得每個人的後輩都比那個人後列出 sample input 5 0 4 5 1 0 1 0 5 3 0 3 0樣例輸出 sample output 2 4 5 3 1 因為需輸出字典序最小的因而要使用優先...
插入排序的種類及實現
基本思想是從第乙個數開始,從後面每插入乙個數就與前面的已有的數進行比較,一般情況下從小到大排序。include include define tint define max size 20typedef t sqlist max size void insertsort1 sqlist l,int ...
拓撲排序的具體幾種方法及
一,幾種基本的方法 1.無前趨的的頂點優先拓撲排序 思路 在有向圖建立完成之後,維護兩個點集,乙個是當前出度為0的點集,記為 另乙個是出度不為0 的點集,記為 以及乙個記錄各個點出度的陣列。首先遍歷一遍圖的全部邊,初始化所有點的出度,然後出度為0的點依次 入 然後將 中的點分別出列,每次出列都需要更...