I. Improve SPAM

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

题意:

DAG上从1号点到其他终止点的路径方案数

AC代码:

const int N = 2020;
const ll mod = 1e9 + 7;
vector<ll> edge[N];
ll n, m, dp[N], cnt = 0, ans = 0;

ll dfs(ll cur)
{
	if (dp[cur] != -1)
		return dp[cur];
	if (cur > m)
	{
		cnt++;
		dp[cur] = 1;
		return dp[cur];
	}
	ll sum = 0;
	for (auto x : edge[cur])
		sum = ((dfs(x) % mod) + sum) % mod;
	dp[cur] = sum;
	return sum;
}

int main()
{
	rep(i, 0, N - 1)
		dp[i] = -1;
	sldd(n, m);
	rep(i, 1, m)
	{
		ll x;
		sld(x);
		while (x--)
		{
			ll y;
			sld(y);
			edge[i].pb(y);
		}
		sort(edge[i].begin(), edge[i].end());
	}
	ll ans = dfs(1);
	pldd(ans, cnt);
	return 0;
}

发布了786 篇原创文章 · 获赞 460 · 访问量 24万+

猜你喜欢

转载自blog.csdn.net/qq_43627087/article/details/105396701