比赛 |
NOIP模拟赛by mzx Day2 |
评测结果 |
WWWWWWWWWW |
题目名称 |
森林大礼包 |
最终得分 |
0 |
用户昵称 |
ghost |
运行时间 |
0.961 s |
代码语言 |
C++ |
内存使用 |
44.18 MiB |
提交时间 |
2016-10-20 20:57:32 |
显示代码纯文本
#include<iostream>
#include<string>
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<iomanip>
#include<queue>
#include<vector>
#include<cstring>
using namespace std;
const int maxn=500001;
const int yu=1000000007;
int n;
int a[maxn][20];
int fa[maxn],dep[maxn];
int k[maxn];
/*int getfa(int k)
{
if(fa[k]==k) return fa[k];
fa[k]=getfa(fa[k]);
//dep[k]=(dep[k]+dep[fa[k]])%yu;
return fa[k];
}
void megre(int x,int y)
{
if(y==0) return;
int fx=getfa(x);
int fy=getfa(y);
fa[fx]=fy;
//dep[fx]=(dep[fx]+dep[fy])%yu;
}*/
int main()
{
freopen("three_squirrels.in","r",stdin);
freopen("three_squirrels.out","w",stdout);
ios::sync_with_stdio(false);
cin>>n;
for(int i=0;i<n;i++)
{
cin>>k[i];
for(int j=1;j<=k[i];j++)
cin>>a[i][j];
}
memset(dep,0,sizeof(dep));
for(int i=0;i<n;i++)
fa[i]=i;
int sum=0;
dep[0]=1;
for(int i=1;i<n;i++)
{
for(int j=1;j<=k[i-1];j++)
{
//megre(a[i][j],a[i][j]-1);
dep[i]=(dep[i]+dep[a[i-1][j]])%yu;
}
}
cout<<dep[n-1]+dep[n-2]<<endl;
return 0;
}