help 记忆化 本地过不去
查看原帖
help 记忆化 本地过不去
487885
C某某是个人楼主2022/8/30 18:24

代码如下

#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;

int ls[100010];
bool in[100010];
int n, m, ans = 0;
vector<int> g[100010];

int dfs(int n)
{
	if(ls[n]) return ls[n];
	if(!g[n].size()) return 1;
	int num = 0;
	for(int i = 0; i < g[n].size(); ++i)
	{
		num += dfs(g[n][i]);
	}
	ls[n] = num;
	return num;
}

int main()
{
	scanf("%d %d", &n, &m);
	while(--m)
	{
		int u, v;
		scanf("%d %d", &u, &v);
		g[u].push_back(v);
		in[v] = true;
	}
	for(int i = 1; i <= n; i++)
	{
		if(g[i].size() && !in[i]) ans += dfs(i);
	}
	printf("%d", ans);
	return 0;
}

2022/8/30 18:24
加载中...