HDU 5695(拓撲排序,最大權優先佇列)

2021-10-08 21:34:24 字數 1311 閱讀 2838

拿到這題,看到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...