比赛 NOIP模拟赛by mzx Day2 评测结果 AAAAAAAAAA
题目名称 森林大礼包 最终得分 100
用户昵称 dududu 运行时间 1.203 s
代码语言 C++ 内存使用 1.66 MiB
提交时间 2016-10-20 19:05:07
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<vector>
using namespace std;

#define KN 100010
#define P 1000000007
vector<int> G[KN];
int N;
/*
输入数据第一行为一个整数n,意义如题目所示。
  接下来n行,第i行一个整数ki,代表i号包装袋中含有ki个其他包装袋,接下来ki个整数aij代表这ki个包装袋的编号。
*/
int cnt[KN];
void init()
{
	scanf("%d",&N);
	for(int i=1,tmp;i<=N;i++)
	{
		scanf("%d",&tmp);
		for(int j=1,xdd;j<=tmp;j++)
		{
			scanf("%d",&xdd);
			G[i].push_back(xdd);
		}
	}
	cnt[0]=1;
}



int dfs(int fa)
{
	if(cnt[fa]) return cnt[fa];
	for(int i=0;i<G[fa].size();i++)
		cnt[fa]=(cnt[fa]+dfs(G[fa][i]))%P;
	return cnt[fa];
}

int main()
{
	freopen("three_squirrels.in","r",stdin);
	freopen("three_squirrels.out","w",stdout);
	init();
	dfs(N);
	printf("%d",cnt[N]);
	return 0;
}