眾所周知,度度熊喜歡各類體育活動。
今天,它終於當上了夢寐以求的體育課老師。第一次課上,它發現乙個有趣的事情。在上課之前,所有同學要排成一列, 假設最開始每個人有乙個唯一的id,從1到n,在排好隊之後,每個同學會找出包括自己在內的前方所有同學的最小id,作為自己評價這堂課的分數。麻煩的是,有一些同學不希望某個(些)同學排在他(她)前面,在滿足這個前提的情況下,新晉體育課老師——度度熊,希望最後的排隊結果可以使得所有同學的評價分數和最大。
第一行乙個整數t,表示t(1≤t≤30) 組資料。
對於每組資料,第一行輸入兩個整數n和m(1≤n≤100000,0≤m≤100000),分別表示總人數和某些同學的偏好。
接下來m行,每行兩個整數a 和b(1≤a,b≤n),表示id為a的同學不希望id為b的同學排在他(她)之前。你可以認為題目保證至少有一種排列方法是符合所有要求的。
對於每組資料,輸出最大分數 。
31 0
2 11 2
3 13 112
6在滿足拓撲關係的條件下,每次貪心扔乙個最大的上去就好了
然後最後在統計一下答案就可以了
#include#include#include#include#include#includeusing namespace std;
const int maxn = 1e5+7;
int n,m;
int a[maxn],d[maxn];
vectore[maxn];
priority_queueq;
void init()
void solve()
for(int i=1;i<=n;i++)
int tot = 0;
while(!q.empty())
}long long ans = 0;
int tmp = 1e9;
for(int i=0;icout<}int main()
HDU 5695(拓撲排序,最大權優先佇列)
拿到這題,看到a後面是b的要求,就能想到一條a指向b的邊,a入度為0應該先考慮,a考慮了,b的入度就變成了0就該接著考慮,就可以想到用拓撲排序,維護乙個最大優先權佇列,先將入度為0全部入列,然後挨個pop維護minn並累加進ans裡,每次都要記得更新節點入度,出現0就入列,佇列空時即為結束,輸出an...
G 產生冠軍 HDU 2094
有一群人,打桌球比賽,兩兩捉對撕殺,每兩個人之間最多打一場比賽。球賽的規則如下 如果a打敗了b,b又打敗了c,而a與c之間沒有進行過比賽,那麼就認定,a一定能打敗c。如果a打敗了b,b又打敗了c,而且,c又打敗了a,那麼a b c三者都不可能成為冠軍。根據這個規則,無需迴圈較量,或許就能確定冠軍。你...
2018江蘇省賽G題(hdu6282)
hdu6268 題意 給你aa,bb,abab這樣的三個字串,和兩個字串s,t,讓你在t中任意刪除或者插入任意多個aa,bb,abab,最後得到t。題解 思維題,簡單手畫畫就可以得出乙個結論,aa,bb,abab,可以得到任意由,a和b組成的且a和b的個數為都為偶數個的字串。這樣s可以變成t就要求c...