P4017 最大食物鏈計數 拓撲排序

2022-04-07 21:54:48 字數 1258 閱讀 5193

你知道食物鏈嗎?delia生物考試的時候,數食物鏈條數的題目全都錯了,因為她總是重複數了幾條或漏掉了幾條。於是她來就來求助你,然而你也不會啊!寫乙個程式來幫幫她吧。

給你乙個食物網,你要求出這個食物網中最大食物鏈的數量。

(這裡的「最大食物鏈」,指的是生物學意義上的食物鏈,即最左端是不會捕食其他生物的生產者,最右端是不會被其他生物捕食的消費者。)

delia非常急,所以你只有1秒的時間。

由於這個結果可能過大,你只需要輸出總數模上80112002的結果。

第一行,兩個正整數n、m,表示生物種類n和吃與被吃的關係數m。

接下來m行,每行兩個正整數,表示被吃的生物a和吃a的生物b。

一行乙個整數,為最大食物鏈數量模上80112002的結果。

輸入

571

2132

3352

5453

4

輸出

5
各測試點滿足以下約定:

【補充說明】

資料中不會出現環,滿足生物學的要求。(感謝@akee )

題解:

利用拓撲排序o(m)統計.

從不能吃別人(入度為0)的開始,記為1,不斷更新,每傳遞到乙個,就讓那個點的權值加上傳遞過去這個點的權值.

最後傳到所有沒有出度的點就是滿足最大食物鏈的了.

#include #include 

#include

using

namespace

std;

const

int n = 5e3 + 5, mod = 80112002

;int

n, m, indeg[n], outdeg[n], a, b, f[n], ans;

intmap[n][n];

queue

q;intmain()

for(int i = 1;i <= n;i ++) if(indeg[i] == 0) f[i] = 1

, q.push(i);

while(!q.empty())}}

cout

<

}

P4017 最大食物鏈計數 拓撲排序

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

P4017 最大食物鏈計數

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

P4017 最大食物鏈計數

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