比赛 2024国庆练习1 评测结果 AAAAAAAAAA
题目名称 森林大礼包 最终得分 100
用户昵称 会挽弯弓满月 运行时间 0.622 s
代码语言 C++ 内存使用 10.13 MiB
提交时间 2024-10-04 16:22:58
显示代码纯文本
#include <bits/stdc++.h> 
#define ll long long
const int N=1e5+10;
const int M=1e9+7;
using namespace std;
void read(ll &x) 
{
	x=0;
	ll f=1;
	char c=getchar();
	while(c<'0'||c>'9')
	{
		if(c=='-') f=-1;
		c=getchar();
	}
	while(c>='0'&&c<='9')
	{
		x=x*10+c-'0';
		c=getchar();
	}
	x*=f;
}
ll n,k,t;
ll f[N];
vector<ll> a[N];
ll dfs(ll x)
{
	if(f[x]) return f[x];
	if(x==0) return 1;
	ll len=a[x].size(),t=0;
	for(int i=0;i<len;i++)
	{
		t+=dfs(a[x][i]);
		t%=M;
	}
	f[x]=max(f[x],t);
	return t;
}
int main()
{
	freopen("three_squirrels.in","r",stdin);
	freopen("three_squirrels.out","w",stdout);
	read(n);
	for(int i=1;i<=n;i++)
	{
		read(k);
		while(k--)
		{
			read(t);
			a[i].push_back(t);
		}
	}
	printf("%lld",dfs(n));
	return 0;
}