洛谷 P4017 最大食物鏈計數

2022-03-19 07:26:29 字數 656 閱讀 3014

看到這種明顯的有向無環圖,並且等級分明,自然而然就能想到拓補排序啦。對於這道題,我們就可以利用最短路計數的那種思想(不知道也沒關係),設\(j\)是\(i\)的後繼,\(dis_i\)表示以\(i\)為結尾有多少條食物鏈,那麼就可以得到\(dis_j+=dis_i\),然後往後面推,直到拓補排序結束。因為題目要求的是沒有可以吃其他動物的動物為食物鏈最後,所以統計出度為0的點的\(dis\)值即可。

**:

#include using namespace std;

int n , m , ans;

int f1[5010] , f2[5010] , dis[5010];

vectore[5010];

int main()

queueq;

for(int i = 1; i <= n; i++)

if(!f1[i]) q.push(i) , dis[i] = 1; //初始化一下 ,準備拓補排序

while(!q.empty())

} for(int i = 1; i <= n; i++)

if(!f2[i]) ans += dis[i] , ans %= 80112002; //統計答案~

cout << ans;

return 0;

}

P4017 最大食物鏈計數(洛谷)

傳送門 這道題就是記憶化搜尋。中文題面,不解釋 這道題拓撲排序,存在 不存在拓撲路徑都得算入。用鄰接表實現 根據題目的最大食物鏈的規定,我們需要從出度為零的點開始搜,一直搜到入度為零的點結束。也可以從入度為0的點開始,到出度為0的點結束 這樣算一條路徑。然後累加即可。用vis標記一下。即我們從出度為...

洛谷 P4017 最大食物鏈計數

洛谷傳送門 你知道食物鏈嗎?delia生物考試的時候,數食物鏈條數的題目全都錯了,因為她總是重複數了幾條或漏掉了幾條。於是她來就來求助你,然而你也不會啊!寫乙個程式來幫幫她吧。給你乙個食物網,你要求出這個食物網中最大食物鏈的數量。這裡的 最大食物鏈 指的是生物學意義上的食物鏈,即最左端是不會捕食其他...

P4017 最大食物鏈計數

你知道食物鏈嗎?delia生物考試的時候,數食物鏈條數的題目全都錯了,因為她總是重複數了幾條或漏掉了幾條。於是她來就來求助你,然而你也不會啊!寫乙個程式來幫幫她吧。給你乙個食物網,你要求出這個食物網中最大食物鏈的數量。這裡的 最大食物鏈 指的是生物學意義上的食物鏈,即最左端是不會捕食其他生物的生產者...