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 最大食物链计数的主要内容,如果未能解决你的问题,请参考以下文章

luogu P4017 最大食物链计数 题解

P4017 最大食物链计数拓扑排序

P4017 最大食物链计数 (拓扑排序)

P4017 最大食物链计数(拓扑排序/高中生物)

动态规划的引入 P4017 最大食物链计数拓扑排序的条数计算

ACM入门之图论习题