傳送門
這道題就是記憶化搜尋。
中文題面,不解釋
這道題拓撲排序,存在/不存在拓撲路徑都得算入。
用鄰接表實現
根據題目的最大食物鏈的規定,我們需要從出度為零的點開始搜,一直搜到入度為零的點結束。(也可以從入度為0的點開始,到出度為0的點結束)。這樣算一條路徑。然後累加即可。
用vis標記一下。即我們從出度為0的點開始搜。
記得模mod
**部分:
#include
using
namespace std;
const
int mod =
80112002
;const
int n =
5e3+10;
int n, m;
vector<
int> e[n]
;int vis[n]
;int dp[n]
;int
dfs(
int x)
int res =0;
if(!e[x]
.size()
)for
(int i =
0; i < e[x]
.size()
; i++
)return dp[x]
% mod;
}int
main()
int ans =0;
for(
int i =
1; i <= n; i++)}
cout << ans << endl;
return0;
}
洛谷 P4017 最大食物鏈計數
看到這種明顯的有向無環圖,並且等級分明,自然而然就能想到拓補排序啦。對於這道題,我們就可以利用最短路計數的那種思想 不知道也沒關係 設 j 是 i 的後繼,dis i 表示以 i 為結尾有多少條食物鏈,那麼就可以得到 dis j dis i 然後往後面推,直到拓補排序結束。因為題目要求的是沒有可以吃...
洛谷 P4017 最大食物鏈計數
洛谷傳送門 你知道食物鏈嗎?delia生物考試的時候,數食物鏈條數的題目全都錯了,因為她總是重複數了幾條或漏掉了幾條。於是她來就來求助你,然而你也不會啊!寫乙個程式來幫幫她吧。給你乙個食物網,你要求出這個食物網中最大食物鏈的數量。這裡的 最大食物鏈 指的是生物學意義上的食物鏈,即最左端是不會捕食其他...
P4017 最大食物鏈計數
你知道食物鏈嗎?delia生物考試的時候,數食物鏈條數的題目全都錯了,因為她總是重複數了幾條或漏掉了幾條。於是她來就來求助你,然而你也不會啊!寫乙個程式來幫幫她吧。給你乙個食物網,你要求出這個食物網中最大食物鏈的數量。這裡的 最大食物鏈 指的是生物學意義上的食物鏈,即最左端是不會捕食其他生物的生產者...