比赛 |
NOIP模拟赛by mzx Day2 |
评测结果 |
AAAAAAAAAA |
题目名称 |
森林大礼包 |
最终得分 |
100 |
用户昵称 |
_Itachi |
运行时间 |
0.310 s |
代码语言 |
C++ |
内存使用 |
9.79 MiB |
提交时间 |
2016-10-20 21:45:03 |
显示代码纯文本
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cctype>
using namespace std;
int _read(){int ret,neg;char ch;ret=neg=0;while(!isdigit(ch=getchar())&&ch!='-');if(ch=='-')neg=1,ch=getchar();while(ret=ret*10+ch-'0',isdigit(ch=getchar()));if(neg)ret=-ret;return ret;}
const int maxn=100005,maxm=maxn*20,INF=1000*1000*1000+7;
struct _tree{int to,next;}e[maxm];
int n,len=1,head[maxn],f[maxn];
void _set(int prt,int son){
e[++len].to=son,e[len].next=head[prt],head[prt]=len;
}
#define to e[i].to
int _run(int rt){
if(f[rt])return f[rt];
if(!rt)return f[rt]=1;
for(int i=head[rt];i;i=e[i].next)
f[rt]+=_run(to),f[rt]%=INF;
return f[rt];
}
void _work(){
n=_read();int i,k,x;
for(i=1;i<=n;i++){
k=_read();
while(k--)x=_read(),_set(i,x);
}
printf("%d\n",_run(n));
}
bool _Rabit(),_RABIT=_Rabit();int main(){;}
bool _Rabit(){
#define _Rabit _RABIT
#ifdef _Rabit
freopen("three_squirrels.in","r",stdin);
freopen("three_squirrels.out","w",stdout);
#endif
_work();
#ifndef _Rabit
getchar(),getchar();
#endif
fclose(stdin);fclose(stdout);
}