记录编号 312492 评测结果 AAAAA
题目名称 [HAOI 2005]希望小学 最终得分 100
用户昵称 GravatarHakurou! 是否通过 通过
代码语言 C++ 运行时间 0.000 s
提交时间 2016-09-26 16:12:24 内存使用 0.00 MiB
显示代码纯文本
  1. #include<cmath>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<iostream>
  5. #include<algorithm>
  6. #define GET (ch>='0'&&ch<='9')
  7. #define FA(i,a,b) for(i=a;i<=b;i++)
  8. #define FL(i,a,b) for(i=a;i>=b;i--)
  9. typedef long long ll;
  10. const int miau=160325521;
  11. using namespace std;
  12. int i,j,k;
  13. void in(int &x)
  14. {
  15. char ch=getchar();x=0;int f=1;
  16. while(!GET)f=ch=='-'?-1:f,ch=getchar();
  17. while(GET)x=x*10+ch-'0',ch=getchar();x*=f;
  18. }
  19. int main(){;}
  20. int n,m;
  21. int ba,bb,bc,ga,gb,gc;
  22. int b[500],g[500];
  23. int from,to,ra,rb,rc;
  24. int f[500][500];
  25. void pre(int n)
  26. {
  27. FA(i,1,n)
  28. {
  29. FA(j,1,n)
  30. {
  31. if(i==j)f[i][j]=0;
  32. else f[i][j]=miau;
  33. }
  34. }
  35. }
  36. void floyd(int n)
  37. {
  38. int i;
  39. FA(i,1,n)
  40. {
  41. FA(j,1,n)
  42. {
  43. FA(k,1,n)
  44. {
  45. if(f[i][j]+f[j][k]<=f[i][k])f[i][k]=f[i][j]+f[j][k];
  46. }
  47. }
  48. }
  49. FL(i,n,1)
  50. {
  51. FL(j,n,1)
  52. {
  53. FL(k,n,1)
  54. {
  55. if(f[i][j]+f[j][k]<=f[i][k])f[i][k]=f[i][j]+f[j][k];
  56. }
  57. }
  58. }
  59. }
  60. void printfloyd(int n)
  61. {
  62. FA(i,1,n)
  63. {
  64. FA(j,1,n)
  65. {
  66. printf("%d ",f[i][j]);
  67. }
  68. printf("\n");
  69. }
  70. }
  71. int A()
  72. {
  73. freopen("hopeschool.in","r",stdin);
  74. freopen("hopeschool.out","w",stdout);
  75. in(n);in(ba);in(bb);in(bc);in(ga);in(gb);in(gc);
  76. pre(n);
  77. FA(i,1,n)in(b[i]);
  78. FA(i,1,n)in(g[i]);
  79. in(m);
  80. FA(i,1,m)
  81. {
  82. in(from);in(to);in(ra);in(rb);in(rc);
  83. f[from][to]=b[from]*(ra*ba+rb*bb+rc*bc)+g[from]*(ra*ga+rb*gb+rc*gc);
  84. f[to][from]=b[to]*(ra*ba+rc*bb+rb*bc)+g[to]*(ra*ga+rc*gb+rb*gc);
  85. }
  86. floyd(n);
  87. //printfloyd(n);
  88. int dis[500];
  89. FA(i,1,n)dis[i]=0;
  90. FA(i,1,n)
  91. {
  92. FA(j,1,n)
  93. {
  94. FA(k,1,n)
  95. {
  96. if(k==i)
  97. {
  98. dis[i]+=f[j][k];
  99. }
  100. }
  101. }
  102. }
  103. //FA(i,1,n)printf("%d ",dis[i]);
  104. int min=miau;
  105. int num;
  106. FA(i,1,n)
  107. {
  108. if(dis[i]<min)
  109. {
  110. min=dis[i];
  111. num=i;
  112. }
  113. }
  114. printf("%d\n",num);
  115. return 0;
  116. }
  117. int B=A();