具體的實現:
1、找到乙個入度為零的點,把它丟進佇列。
2、把這個點以及與這個點相連的邊都刪去。
3、重複1、2直到圖為空。
對,又有個裸題 poj 2367 genealogical tree鏈結
就是直接把拓撲排序後的序列輸出即可。
**如下:
#include
#include
#include
#include
using
namespace
std;
const
int maxn=100+10;
int ans[maxn],in[maxn];
bool vis[maxn][maxn];
int n,cnt;
queue
q;void sort()
}for(int i=1;i<=n;i++)}}
}int main()
}for(int i=1;i<=n;i++)
}sort();
for(int i=1;i<=cnt;i++)
printf("%d ",ans[i]);
puts("");
}return
0;}
還有乙個裸題… codevs 2833 奇怪的夢境鏈結
只要把不能進行排序的數輸出即可…
**如下:
#include
#include
#include
#include
using
namespace
std;
const
int maxn=10000+10;
int ans[maxn],in[maxn];
bool vis[maxn][maxn];
int n,cnt;
queue
q;void sort()
}for(int i=1;i<=n;i++)}}
}int main()
for(int i=1;i<=n;i++)
}sort();
if(cnt==n)
puts("o(∩_∩)o");
else
return
0;}
//以後有拓撲排序的應用我還會在這裡發的~(≧▽≦)/~ 筆記 拓撲排序
對於任何有向圖而言,其拓撲排序為其所有結點的乙個線性排序 對於同乙個有向圖而言可能存在多個這樣的結點排序 該排序滿足這樣的條件 對於圖中的任意兩個結點u和v,若存在一條有向邊從u指向v,則在拓撲排序中u一定出現在v前面。拓撲排序常見於判斷有向圖是否有環 統計dag的資訊等。記錄每個節點的入度,把入度...
拓撲排序學習筆記
1.拓撲排序只對於有向無環圖而言 directed acyclic graph簡稱dag 2.在乙個有向無環圖中,若a b c,則拓撲序列為 a,b,c 也就是說如果一條邊a b,那麼在拓撲序列裡a就在b前面 知道了這兩點,那麼就可以來求拓撲序列了 首先,我們知道在dag中一定存在乙個入度為0的點,...
拓撲排序學習筆記
1.輸出字典序最小的拓撲序 在bfs演算法方法中用優先佇列 2.題意 n個點m條邊 dag 求刪去每個點後1 n最短路 n,m 3e5 做法 首先在dag中可以跑拓撲排序,跑完拓撲排序有什麼好處呢?拓撲序上的乙個點k作為劃分線,前半段的點的集合設為x,後半段點的集合設為y,那麼從點1到x中的任意乙個...