bzoj4010 拓撲排序優先最小值

2021-09-11 08:37:43 字數 511 閱讀 2121

優先選最小值並不是直接建圖進行拓撲排序,優先選最小值不同於求拓撲排序的最小字典序。

思路:反向建圖,優先選取最大值進行拓撲排序,最後倒序輸出陣列(或者記錄的時候可以倒著記錄,最後正著輸出)

#include using namespace std;

typedef long long ll;

const int inf=0x3f3f3f3f;

const int maxn=1e5+5;

struct edgepe[maxn*10];

int a[maxn],cnt=1,in[maxn],n,m;

int head[maxn],ans=1;

void add(int x,int y)

void tuopu()

}} int main()

cnt=n;

tuopu();

if(cnt!=0)else

} }return 0;

}

BZOJ 4010 菜餚製作

知名美食家小a被邀請至atm 大酒店,為其品評菜餚。atm酒店為小a準備了 n 道菜餚,酒店按照為菜餚預估的質量從高到低給予 1 到 n 的順序編號,預估質量最高的菜餚編號為 1 由於菜餚之間口味搭配的問題,某些菜餚必須在另一些菜餚之前製作,具體的,一共有 m 條形如 i 號菜餚 必須 先於 j 號...

拓撲排序,廣度優先

使用乙個佇列來進行廣度優先搜尋。初始時,所有入度為 0 的節點都被放入佇列中,它們就是可以作為拓撲排序最前面的節點,並且它們之間的相對順序是無關緊要的。在廣度優先搜尋的每一步中,取出隊首的節點 u 在廣度優先搜尋的過程結束後。如果答案中包含了這 n 個節點,那麼就找到了一種拓撲排序,否則說明圖中存在...

拓撲排序 利用優先佇列

include include include include using namespace std const int maxn 505 vector graph maxn inttopnum maxn nodenum maxn intnumvertex,numedge 有向無環圖一定存在拓撲序...