刚开始学动态规划,如果有什么不好的习惯也可以指出来,感谢!
#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;
}