Reward hdu2647逆拓撲排序

2021-06-17 20:57:23 字數 647 閱讀 3750

題意:工人發工資,每個個人都有要求,比某人多,問滿足搜有人要求的最小總工資數。

思路:逆拓撲排序

之前都是誰大誰是頭節點,但是這題如果誰大誰為頭的話,那麼頭結點的工資將不停的改變,有點麻煩,但是根節點工資永遠不會變,所以可以反過來,誰小誰當根節點,也就是出度變入度,入度變出度,剩下和拓撲一樣,只不過在求個和

#include#include#include#include#includeusing namespace std;

int num[10005];

int reward[10005];

vectorv[10005];

int c_sum = 0;

bool find(int a,int b)

return false;

}void topsort(int n)

while(!q.empty())}}

if(c_sum > 0 )

printf("-1\n");

else

printf("%d\n",sum);

}int main()

for(i = 0; i < m; i++)

}topsort(n);

}return 0;

}

Reward HDU 2647(拓撲排序)

傳送門 qaq 題意 給你n個人,m個關係,關係是指乙個人的獎勵比乙個人高,然後讓你求最少的獎勵金額。思路 如果存在環的話,就不可能,所以就是簡單的乙個拓撲排序。include include include include include include include includeusing ...

康拓展開 康拓逆展開

康拓展開 已知有一集合a包含n個不同的元素,其中 k1,k2,k3.kn 2 是a的乙個排列。假設此排列為a按字典序從小到大排列的排列中的第x個排列,則x a1 n 1 a2 n 2 an 2 1 an 1 0 其中ai為ki 1.kn中比ki小的數的個數 例如 3214是1234的第2 3 1 2...

康托展開及康拓逆展開

康拓展開 把乙個整數x展開成如下形式 x a n n 1 a n 1 n 2 a i i 1 a 2 1 a 1 0 其中a i 為 當前元素 在 所有未出現的元素 中排在第i個 從0開始 並且0 a i 為了更好的理解康托展開,舉個例子 序列3 4 6 2 1 7 5 8 0 總共有9個數 第乙個...