拓撲排序筆記

2021-07-23 13:16:02 字數 1203 閱讀 6970

具體的實現:

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中的任意乙個...