比赛 |
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;
}