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