记录编号 16247 评测结果 AAAAAAAAAA
题目名称 [中山ACM] 商人的宣传 最终得分 100
用户昵称 Gravatar.Xmz 是否通过 通过
代码语言 C++ 运行时间 0.316 s
提交时间 2010-04-23 15:22:46 内存使用 0.30 MiB
显示代码纯文本
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cmath>
  4. #include <cstring>
  5. #include <cstdlib>
  6.  
  7. using namespace std;
  8. const int maxn=200;
  9. const int maxm=maxn*maxn;
  10.  
  11. bool g[maxn][maxn];
  12. int n,m,l;
  13.  
  14. void init()
  15. {
  16. scanf("%d%d%d",&n,&m,&l);
  17. int a,b;
  18. for (int i=1;i<=m;i++)
  19. {
  20. scanf("%d%d",&a,&b);
  21. g[a][b]=true;
  22. }
  23. }
  24.  
  25. int f[2][maxn];
  26.  
  27. int solve(int S,int T)
  28. {
  29. memset(f,0,sizeof(f));
  30. f[0][S]=1;
  31. for (int tim=1;tim<=l;tim++)
  32. {
  33. for (int i=1;i<=n;i++)
  34. if (f[0][i])
  35. for (int j=1;j<=n;j++)
  36. if (g[i][j])
  37. f[1][j]+=f[0][i];
  38. memcpy(f[0],f[1],sizeof(f[1]));
  39. memset(f[1],0,sizeof(f[1]));
  40. }
  41. return f[0][T];
  42. }
  43.  
  44. int main()
  45. {
  46. freopen("merchant.in","r",stdin);
  47. freopen("merchant.out","w",stdout);
  48. int q,a,b;
  49. init();
  50. scanf("%d",&q);
  51. for (int i=1;i<=q;i++)
  52. {
  53. scanf("%d%d",&a,&b);
  54. printf("%d\n",solve(a,b));
  55. }
  56. return 0;
  57. }