比赛 NOIP模拟赛by mzx Day2 评测结果 AAAAAAAAAA
题目名称 森林大礼包 最终得分 100
用户昵称 Mealy 运行时间 1.148 s
代码语言 C++ 内存使用 2.32 MiB
提交时间 2016-10-20 20:53:17
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <vector>
#include <queue>
using namespace std;
const int nmax=100086;
const int FJ=1000000007;

int n;
int tmp;
int tmpv;
int ans=0;


bool isfinished[nmax]={0};

int val[nmax]={0};
int out[nmax]={0};


vector<int > G[nmax];


void PreDo()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		scanf("%d",&tmp);
		for(int j=1;j<=tmp;j++)
		{
			scanf("%d",&tmpv);
			G[i].push_back(tmpv);
			out[tmpv]++;
		}
	}
	val[0]=1;
}
void DFS(int tmpx)
{
	for(int i=0;i<G[tmpx].size();i++)
	{
		if(!isfinished[G[tmpx][i]])
		{
			DFS(G[tmpx][i]);
		}
		if(isfinished[G[tmpx][i]])
		{
			val[tmpx]=(val[tmpx]+val[G[tmpx][i]])%FJ;
		}
	}
	isfinished[tmpx]=1;
}		
int main()
{
	freopen("three_squirrels.in","r",stdin);
	freopen("three_squirrels.out","w",stdout);
	PreDo();
	DFS(n);
	printf("%d\n",val[n]%FJ);
	return 0;
}