记录编号 116550 评测结果 AAAAAAAAAA
题目名称 神奇的风 最终得分 100
用户昵称 GravatarHouJikan 是否通过 通过
代码语言 C++ 运行时间 0.039 s
提交时间 2014-08-26 08:48:54 内存使用 0.69 MiB
显示代码纯文本
  1. #include <iostream>
  2. #include <cstring>
  3. #include <cstdio>
  4. #include <cstdlib>
  5. #include <cmath>
  6. #include <algorithm>
  7. #include <queue>
  8. #include <stack>
  9. #include <map>
  10. #include <set>
  11. #include <list>
  12. #include <vector>
  13. #include <ctime>
  14. #include <iterator>
  15. #include <functional>
  16. #define pritnf printf
  17. #define scafn scanf
  18. #define For(i,j,k) for(int i=(j);i<=(k);(i)++)
  19. using namespace std;
  20. typedef long long LL;
  21. typedef unsigned int Uint;
  22. const int INF=0x7ffffff;
  23. //==============struct declaration==============
  24. struct winds
  25. {
  26. int row,line,level,rnd;
  27. winds(int row,int line,int level,int rnd):row(row),line(line),level(level),rnd(rnd){} ;
  28. winds()
  29. {
  30. ;
  31. }
  32. };
  33. //==============var declaration=================
  34. char maps[210][210];
  35. int level[210][210];
  36. int rnd[210][210];
  37. int mvr[4]={0,1,0,-1};
  38. int mvc[4]={1,0,-1,0};
  39. //==============function declaration============
  40.  
  41. //==============main code=======================
  42. int main()
  43. {
  44. string FileName="wind";//程序名
  45. string FloderName="COGS";//文件夹名
  46. freopen((FileName+".in").c_str(),"r",stdin);
  47. freopen((FileName+".out").c_str(),"w",stdout);
  48. #ifdef DEBUG
  49. system(("cp C:\\Users\\Administrator\\Desktop\\"+FloderName+"\\standard.cpp C:\\Users\\Administrator\\Desktop\\"+FloderName+"\\submit.txt").c_str());
  50. #endif
  51. int r,c;
  52. queue <winds> Q;
  53. scanf("%d%d",&r,&c);
  54. cin.ignore(10,10);
  55. winds start,ends;
  56. memset(level,0,sizeof(level));
  57. memset(rnd,0,sizeof(rnd));
  58. For(i,0,r-1)
  59. {
  60. cin.getline(maps[i],250);
  61. For(j,0,c-1)
  62. {
  63. if (maps[i][j]=='S')
  64. {
  65. start.row=i;
  66. start.line=j;
  67. start.level=16384;
  68. level[i][j]=16384;
  69. }
  70. if (maps[i][j]=='E')
  71. {
  72. ends.row=i;
  73. ends.line=j;
  74. }
  75. }
  76. }
  77. scanf("%d",&start.rnd);
  78. rnd[start.row][start.line]=start.rnd;
  79. Q.push(start);
  80. winds x;
  81. while (!Q.empty())
  82. {
  83. x=Q.front();
  84. Q.pop();
  85. For(i,0,3)
  86. {
  87. int rr=x.row+mvr[i];
  88. int cc=x.line+mvc[i];
  89. if (rr>=0&&rr<r&&cc>=0&&cc<c)
  90. {
  91. if (maps[rr][cc]=='.'||maps[rr][cc]=='E')
  92. if (x.level>level[rr][cc])
  93. {
  94. level[rr][cc]=x.level;
  95. rnd[rr][cc]=!rnd[x.row][x.line];
  96. Q.push(winds(rr,cc,x.level,!x.rnd));
  97. }
  98. if (maps[rr][cc]=='*')
  99. if (x.level/2>level[rr][cc])
  100. {
  101. level[rr][cc]=x.level/2;
  102. rnd[rr][cc]=!rnd[x.row][x.line];
  103. Q.push(winds(rr,cc,x.level/2,!x.rnd));
  104. }
  105. }
  106. }
  107. }
  108. if (level[ends.row][ends.line]==0)
  109. printf("There's no wind!\n");
  110. else
  111. printf("%d\n%d\n",level[ends.row][ends.line],rnd[ends.row][ends.line]);
  112. return 0;
  113. }
  114. //================fuction code====================