傳送門:[hnoi2015]菜餚製作
根據題目的描述,我們要做的首先是一步一步的分析:
這個題肯定是拓撲排序無疑,因為要求的是滿足固定條件(有向圖的連邊)的某種排列,而難點就在於如何拓撲排序。
根據題目的描述,我們首先想到的是根據字典序大小進行排序,那麼我們就舉例幾組資料來驗證一下是否正確,那麼先看下面這一組資料:
15 2
3 24 1
根據我們的猜想,資料的輸出應該是:
3 2 4 1 5
但經過分析,實際上應該是:
4 1 3 2 5
那麼就肯定不是根據字典序來進行拓撲排序了。那是根據什麼呢?
答案是根據反圖的較大字典序進行倒序輸出,這樣就可以保證最小的值盡量靠前了
**:
#include
#include
#include
#include
#include
#include
#include
#define maxn 300030
using
namespace std;
inline
intread()
while
(c<=
'9'&&c>=
'0')
return a*k;
}struct edgeedge[maxn]
;int head[maxn]
,cnt,du[maxn]
;void
add(
int x,
int y)
priority_queue <
int> torp;
int n,m,d,x,y,tot,toop[maxn]
;bool imp;
intmain()
}if(imp)
continue
;for
(int i=
1;i<=n;i++
)while
(!torp.
empty()
)}if(totfor(
int i=n;i>=
1;i--
)printf
("\n");
}return0;
}
HNOI2015 菜餚製作 題解(貪心 拓撲)
知名美食家小 a被邀請至atm 大酒店,為其品評菜餚。atm 酒店為小 a 準備了 n 道菜餚,酒店按照為菜餚預估的質量從高到低給予 1到n的順序編號,預估質量最高的菜餚編號為1。由於菜餚之間口味搭配的問題,某些菜餚必須在另一些菜餚之前製作,具體的,一共有 m 條形如 i 號菜餚 必須 先於 j 號...
拓撲排序 HNOI2015 菜餚製作
知名美食家小 a被邀請至atm 大酒店,為其品評菜餚。atm 酒店為小 a 準備了 n 道菜餚,酒店按照為菜餚預估的質量從高到低給予1到n的順序編號,預估質量最高的菜餚編號為1。由於菜餚之間口味搭配的問題,某些菜餚必須在另一些菜餚之前製作,具體的,一共有 m 條形如 i 號菜餚 必須 先於 j 號菜...
HNOI2015 菜餚製作 思想 拓撲排序
題意 求乙個拓撲序列,保證以1 n的優先順序,每個數盡量排在前面 分析 顯然求字典序最小的拓撲序有問題,字典序列由每個位置的數字決定,可是這裡有乙個1 n的優先順序,就是說盡量要保證1在前,以此類推。如果說乙個元素,圖中不存在 與它深度相同 的元素的話,那麼它在拓撲序列中的位置一定是固定的,那麼我們...