P4017 最大食物链计数
Posted karshey
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了P4017 最大食物链计数相关的知识,希望对你有一定的参考价值。
参考:这里
代码:
/*
参考:
https://blog.csdn.net/yxrzibinanhai/article/details/107519478
并没有完全会。
*/
#include<bits/stdc++.h>
using namespace std;
const long long int MOD=80112002;
int num[5050];
vector<int>swl[5050];
int dfs(int i)
{
if(num[i]) return num[i];//已经搜过
if(swl[i].empty()) return 1;//没有可以吃的,只有自己1层,食物链低
int sum=0;
for(int j=0;j<swl[i].size();j++)
{
sum=(sum+dfs(swl[i][j]))%MOD;//计算被i吃的每一条路
}
num[i]=sum;
return sum;
}
int main()
{
//后吃前
int n,m,x,y,flag[5050];
cin>>n>>m;
fill(flag,flag+5050,0);
for(int i=0;i<m;i++)
{
cin>>x>>y;
swl[y].push_back(x);//y吃x
flag[x]=1;//1表示被吃,无法成为食物链顶
}
for(int i=1;i<=n;i++)
{
dfs(i);
}
int maxx=0;
for(int i=1;i<=n;i++)
{
if(!flag[i])//是食物链顶
{
maxx=maxx+num[i];
maxx=maxx%MOD;
}
}
cout<<maxx;
return 0;
}
以上是关于P4017 最大食物链计数的主要内容,如果未能解决你的问题,请参考以下文章