40分,dfs加记搜,5-10全wa求助大佬
查看原帖
40分,dfs加记搜,5-10全wa求助大佬
272923
魔法使之夜楼主2022/10/19 21:25

刚开始学动态规划,如果有什么不好的习惯也可以指出来,感谢!

#include<iostream>
#include<vector>
using namespace std;
vector<vector<long long>>a;
long long vis[5001];
bool dd[5001];
long long dfs(int x)
{
	if(vis[x]!=0)
	return vis[x];
	long long kkk=0;
	for(long long i=0;i<a[x].size();i++)
	{
		vis[x]=-1;
		kkk=(kkk+dfs(a[x][i]))%80112002;
		vis[x]=0;
	}
	if(a[x].size()==0)
	return 1;
	vis[x]=kkk%80112002;
	return kkk%80112002;
}
int main()
{
	long long n,m;
	long long ans=0;
	cin>>n>>m;
	a.resize(n+1);
	for(long long i=1;i<=m;i++)
	{
		long long b,c;
		cin>>b>>c;
		a[b].push_back(c);
		dd[c]=1;
	}
	for(long long i=1;i<=n;i++)
	{
		if(!dd[i])
		ans+=dfs(i);
	}
	cout<<ans<<endl;
	return 0;
}
2022/10/19 21:25
加载中...