比赛 2024暑假C班集训D 评测结果 AAAAAEEEEE
题目名称 沼泽鳄鱼 最终得分 50
用户昵称 liuyiche 运行时间 1.215 s
代码语言 C++ 内存使用 5.71 MiB
提交时间 2024-07-13 09:14:01
显示代码纯文本
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. typedef long long ll;
  5.  
  6. int n, m, s, t, nf;
  7. int mod = 10000;
  8. ll k;
  9. ll f[55][2005];
  10.  
  11. struct node
  12. {
  13. vector<int> nxt;
  14. };
  15. vector<node> v(55);
  16.  
  17. struct fish
  18. {
  19. int t;
  20. vector<int> re;
  21. };
  22. vector<fish> g(55);
  23.  
  24. inline int dfs(int x, int time)
  25. {
  26. if(time > k)
  27. return 0;
  28. if(f[x][time] != -1)
  29. return f[x][time];
  30. for(int i = 1; i <= nf; ++i)
  31. if(g[i].re[time%g[i].t] == x)
  32. return f[x][time] = 0;
  33. if(x == t && time == k)
  34. return f[x][time] = 1;
  35. ll ans = 0;
  36. for(int i = 0; i < v[x].nxt.size(); ++i)
  37. ans = (ans+dfs(v[x].nxt[i],time+1))%mod;
  38. return f[x][time] = ans;
  39. }
  40. int main()
  41. {
  42. freopen("swamp.in", "r", stdin);
  43. freopen("swamp.out", "w", stdout);
  44. ios::sync_with_stdio(false);
  45. cin.tie(0); cout.tie(0);
  46. memset(f,-1,sizeof(f));
  47. cin >> n >> m >> s >> t >> k;
  48. for(int i = 1; i <= m; ++i)
  49. {
  50. int x, y;
  51. cin >> x >> y;
  52. v[x].nxt.push_back(y);
  53. v[y].nxt.push_back(x);
  54. }
  55. cin >> nf;
  56. for(int i = 1; i <= nf; ++i)
  57. {
  58. cin >> g[i].t;
  59. for(int j = 1; j <= g[i].t; ++j)
  60. {
  61. int p;
  62. cin >> p;
  63. g[i].re.push_back(p);
  64. }
  65. }
  66. cout << dfs(s,0);
  67. return 0;
  68. }
  69.