比赛 NOIP模拟赛by mzx Day2 评测结果 AAAAAAAAAA
题目名称 森林大礼包 最终得分 100
用户昵称 Mealy 运行时间 1.148 s
代码语言 C++ 内存使用 2.32 MiB
提交时间 2016-10-20 20:53:17
显示代码纯文本
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <vector>
  4. #include <queue>
  5. using namespace std;
  6. const int nmax=100086;
  7. const int FJ=1000000007;
  8.  
  9. int n;
  10. int tmp;
  11. int tmpv;
  12. int ans=0;
  13.  
  14.  
  15. bool isfinished[nmax]={0};
  16.  
  17. int val[nmax]={0};
  18. int out[nmax]={0};
  19.  
  20.  
  21. vector<int > G[nmax];
  22.  
  23.  
  24. void PreDo()
  25. {
  26. scanf("%d",&n);
  27. for(int i=1;i<=n;i++)
  28. {
  29. scanf("%d",&tmp);
  30. for(int j=1;j<=tmp;j++)
  31. {
  32. scanf("%d",&tmpv);
  33. G[i].push_back(tmpv);
  34. out[tmpv]++;
  35. }
  36. }
  37. val[0]=1;
  38. }
  39. void DFS(int tmpx)
  40. {
  41. for(int i=0;i<G[tmpx].size();i++)
  42. {
  43. if(!isfinished[G[tmpx][i]])
  44. {
  45. DFS(G[tmpx][i]);
  46. }
  47. if(isfinished[G[tmpx][i]])
  48. {
  49. val[tmpx]=(val[tmpx]+val[G[tmpx][i]])%FJ;
  50. }
  51. }
  52. isfinished[tmpx]=1;
  53. }
  54. int main()
  55. {
  56. freopen("three_squirrels.in","r",stdin);
  57. freopen("three_squirrels.out","w",stdout);
  58. PreDo();
  59. DFS(n);
  60. printf("%d\n",val[n]%FJ);
  61. return 0;
  62. }
  63.  
  64.