记录编号 326304 评测结果 AAAAAAAAAA
题目名称 森林大礼包 最终得分 100
用户昵称 GravatarHzoi_Yniverse 是否通过 通过
代码语言 C++ 运行时间 0.890 s
提交时间 2016-10-21 07:18:05 内存使用 8.71 MiB
显示代码纯文本
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cstring>
  4. #include <algorithm>
  5. using namespace std;
  6. const int maxn=100010;
  7. struct Edge{ int to,next; }e[maxn*10];
  8. int val[maxn],head[maxn],len,mod=1000000007;
  9. void Insert(int x,int y){
  10. len++;
  11. e[len].to=y; e[len].next=head[x];
  12. head[x]=len;
  13. }
  14. int Dp(int x){
  15. if(val[x]) return val[x];
  16. for(int i=head[x];i;i=e[i].next){
  17. int j=e[i].to;
  18. val[x]+=Dp(j); val[x]%=mod;
  19. }
  20. return val[x]%mod;
  21. }
  22. int main(){
  23. freopen("three_squirrels.in","r",stdin);
  24. freopen("three_squirrels.out","w",stdout);
  25. int n;scanf("%d",&n);
  26. for(int i=1;i<=n;i++){
  27. int x;scanf("%d",&x);
  28. for(int j=1;j<=x;j++){
  29. int y;scanf("%d",&y);
  30. Insert(i,y);
  31. }
  32. }
  33. val[0]=1; printf("%d\n",Dp(n));
  34. return 0;
  35. }