国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

BZOJ 4562 食物鏈【記憶化搜索啊】

2019-11-14 12:43:45
字體:
來源:轉載
供稿:網友

4562: [Haoi2016]食物鏈

Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 352  Solved: 263[Submit][Status][Discuss]

Description

如圖所示為某生態系統的食物網示意圖,據圖回答第1小題現在給你n個物種和m條能量流動關系,求其中的食物鏈條數。物種的名稱為從1到n編號M條能量流動關系形如a1 b1a2 b2a3 b3......am-1 bm-1am bm其中ai bi表示能量從物種ai流向物種bi,注意單獨的一種孤立生物不算一條食物鏈

Input

第一行兩個整數n和m,接下來m行每行兩個整數ai bi描述m條能量流動關系。(數據保證輸入數據符號生物學特點,且不會有重復的能量流動關系出現)1<=N<=100000 0<=m<=200000題目保證答案不會爆 int

Output

一個整數即食物網中的食物鏈條數

Sample Input

10 161 21 41 102 32 54 34 54 86 57 67 98 59 810 610 710 9

Sample Output

9

思路:

1、一開始在網上還找到了一個公式:食物鏈條數=分叉邊數-分叉點數+1....

尼瑪大騙紙不好用啊、分叉到兩個子樹中就尼瑪不是一個東西了好伐。

2、統計計數問題考慮dp,設定dp【i】表示以i為根的子樹食物鏈的條數。

那這個題就是水題啊,dp【i】=Σdp【v】;

然后設定個超級源點連度為0的所有節點,那么dp【0】就是答案啊。

3、注意孤立節點不算答案啊。就沒了啊。

Ac代碼:

#include<stdio.h>#include<string.h>#include<vector>using namespace std;vector<int >mp[100600];int degree[100600];int dp[100600];int n,m;int Dfs_Dp(int u){    if(dp[u]==-1)    {        dp[u]=0;        int size=mp[u].size();        for(int i=0;i<size;i++)        {            int v=mp[u][i];            dp[u]+=Dfs_Dp(v);        }        if(size==0)dp[u]=1;        return dp[u];    }    else return dp[u];}int main(){    while(~scanf("%d%d",&n,&m))    {        memset(dp,-1,sizeof(dp));        memset(degree,0,sizeof(degree));        for(int i=0;i<=n;i++)mp[i].clear();        for(int i=0;i<m;i++)        {            int x,y;            scanf("%d%d",&x,&y);            mp[x].push_back(y);            degree[y]++;        }        for(int i=1;i<=n;i++)        {            if(degree[i]==0&&mp[i].size()>0)mp[0].push_back(i);        }        if(mp[0].size()>0)        Dfs_Dp(0);        if(dp[0]<0)dp[0]=0;        PRintf("%d/n",dp[0]);    }}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 镇远县| 上饶市| 格尔木市| 敦煌市| 吐鲁番市| 郴州市| 庐江县| 伊吾县| 丽江市| 柏乡县| 莫力| 博罗县| 长春市| 大城县| 贵阳市| 兴城市| 武夷山市| 怀来县| 江都市| 临江市| 金华市| 叙永县| 屏边| 尼勒克县| 凌云县| 兴城市| 道孚县| 德格县| 无锡市| 翼城县| 西峡县| 手游| 泰安市| 永胜县| 吐鲁番市| 永平县| 山西省| 延川县| 南陵县| 南郑县| 正镶白旗|