40分求助
查看原帖
40分求助
557887
acahv楼主2022/3/11 16:44

记忆化搜索,不知道后六个点为什么一直wa5555求dalaoo捞捞

#include<bits/stdc++.h>
#define int long long
using namespace std;
vector<int> v[5050];
bool st[5050],ed[5050];
int vis[5050];
bool f[5050];
int n,m;
long long ans;
long long dfs(long long x);
signed main()
{
	memset(st,1,sizeof(st));
	memset(ed,1,sizeof(ed));
	cin>>n>>m;
	for(int i=1;i<=m;i++)
	{
		int a,b;
		cin>>a>>b;
		v[b].push_back(a);
		st[a]=0;
		ed[b]=0;
	}
	for(int i=1;i<=n;i++)
	{
		if(st[i]==1)
		{
			ans+=dfs(i)%80112002;
		}
	}
	cout<<ans<<endl;
}
long long dfs(long long x)
{
	if(vis[x])return vis[x];
	else if(ed[x])
	{
		vis[x]=1;
		return vis[x];
	}
	for(int i=0;i<v[x].size();i++)
	{
		vis[x]+=dfs(v[x][i]);
	}
	vis[x]=vis[x]%80112002;
	return vis[x];
}
2022/3/11 16:44
加载中...