拿到這題,看到a後面是b的要求,就能想到一條a指向b的邊,a入度為0應該先考慮,a考慮了,b的入度就變成了0就該接著考慮,就可以想到用拓撲排序,維護乙個最大優先權佇列,先將入度為0全部入列,然後挨個pop維護minn並累加進ans裡,每次都要記得更新節點入度,出現0就入列,佇列空時即為結束,輸出ans
tm我比賽時定義的vector陣列,每次迴圈清空,用錯了方法,導致我一直wa,寫在這裡,當做教訓
vectorto[100005]
我用的to->clear(),其實是刪掉了所有指標
應該挨個clear,像這樣
for(int i=1;i<=n;i++)
all in all!
詳見**
#define _crt_secure_no_warnings
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define ll long long
#define sc(x) scanf("%d",&x)
#define pf(x) printf("%d\n",x)
using
namespace std;
const
int mod =
1e9+7;
ll t;
priority_queue<
int>q;
ll n, m;
ll a, b;
ll tot[
100005];
vectorto[
100005];
intmain()
for(ll i =
1; i <= m; i++
)for
(ll i =
1; i <= n; i++
) ll sum =0;
ll minn =
999999
;while
(!q.
empty()
)}printf
("%lld\n"
, sum);}
}
HDU 5695 Gym Class 拓撲排序
眾所周知,度度熊喜歡各類體育活動。今天,它終於當上了夢寐以求的體育課老師。第一次課上,它發現乙個有趣的事情。在上課之前,所有同學要排成一列,假設最開始每個人有乙個唯一的id,從1到n,在排好隊之後,每個同學會找出包括自己在內的前方所有同學的最小id,作為自己評價這堂課的分數。麻煩的是,有一些同學不希...
hdu1285確定比賽名次 拓撲排序 優先佇列
傳送門 第一道拓撲排序題 每次刪除入度為0的點,並輸出 這題要求隊名小的排前面,所以要用到過載的優先佇列 1 include2 using namespace std 3 priority queue,greater q 優先佇列預設是值越大,優先順序越高,這裡過載了,公升序排列 4 5void t...
hdu 4857 逃生(優先佇列 逆拓撲排序)
題意是給你一些關係,來進行排序,前面的那個人一定在後乙個人前面,也在那些沒有交錢的人的前面。我們用逆拓撲排序,先把入度為零的數從大到小存入陣列。然後就是一般的拓撲排序。最後逆序輸出 include include include include include include includeusin...