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