Advertisement
ghorardim

929 - Number Maze

Jan 19th, 2016
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.23 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<math.h>
  4. #include<ctype.h>
  5. #include<stdlib.h>
  6. #include<cstdio>
  7. #include<cstring>
  8. #include<string>
  9. #include<cmath>
  10. #include<iostream>
  11. #include<cctype>
  12. #include<map>
  13. #include<stack>
  14. #include<cstdlib>
  15. #include<queue>
  16. #include<vector>
  17. #include<algorithm>
  18. #include<bitset>
  19. #include<algorithm>
  20. #include<set>
  21. #include<limits.h>
  22.  
  23. using namespace std;
  24. typedef long int LD;
  25. typedef long long int LLD;
  26. typedef float F;
  27. typedef double LF;
  28. typedef unsigned int U;
  29. typedef unsigned long int LU;
  30. typedef unsigned long long int LLU;
  31. typedef char C;
  32.  
  33. #define sf scanf
  34. #define sfi(x) scanf("%d",&x)
  35. #define sfc(x) scanf("%c",&x)
  36. #define sfi2(x,y) scanf("%d%d",&x,&y)
  37. #define sfl(x) scanf("%ld",&x)
  38. #define sfll(x) scanf("%lld",&x)
  39. #define sfu(x) scanf("%llu",&x)
  40. #define sfs(x) scanf("%s",x)
  41. #define pf printf
  42. #define pfi(x) printf("%d\n",x)
  43. #define pfl(x) printf("%ld\n",x)
  44. #define pfll(x) printf("%lld\n",x)
  45. #define pfu(x) printf("%llu\n",x)
  46. #define pfs(x) printf("%s\n",x)
  47. #define pfc(x) printf("%c\n",x)
  48. #define pb(x) push_back(x)
  49. #define PI acos(-1.0)
  50. #define sq(x) (x)*(x)
  51. #define nn printf("\n")
  52. // xx-> diagonal -> 8 horizontal/vertical->4
  53. const int xx[] = {0, 1, 0, -1, -1, 1, -1, 1};
  54. const int yy[] = {1, 0, -1, 0, 1, 1, -1, -1};
  55.  
  56. // KX-> Knight moves
  57. const int kx[] = {-2, -1, 1, 2, 2, 1, -1, -2};
  58. const int ky[] = {1, 2, 2, 1, -1, -2, -2, -1};
  59.  
  60.  
  61. /******** debug **********/
  62. #define chk1 printf("hi......1\n")
  63. #define chk2 printf("hi......2\n")
  64.  
  65.  
  66.  
  67.  
  68. #define mod 1000003
  69. #define eps 10e-8
  70. #define sz 1002
  71. #define sz1 1004
  72. #define sz2 15
  73. /******* start my code ********/
  74. LLD arr[sz][sz];
  75. LLD ar[sz][sz];
  76. class data
  77. {
  78. public:
  79. int a,b;
  80. LLD cost;
  81. data()
  82. {
  83. a=b=cost=0;
  84. }
  85. data(int an,int bn,int c)
  86. {
  87. a=an;
  88. b=bn;
  89. cost=c;
  90. }
  91. };
  92. priority_queue<data>q;
  93. vector<data>v;
  94. bool operator<(data aa,data bb)
  95. {
  96. return aa.cost>bb.cost;
  97. }
  98. int main()
  99. {
  100. int T,R,C,er,ec,mn,i,j,x,y,val,ln,A;
  101. LLD ans;
  102. bool key;
  103. data Q,P;
  104. sfi(T);
  105. for(i=0; i<sz; i++)
  106. {
  107. for(j=0; j<sz; j++)
  108. {
  109. arr[i][j]=0;
  110. ar[i][j]=9999999999;
  111. }
  112. }
  113. while(T--)
  114. {
  115. sfi(R);
  116. sfi(C);
  117. A=1;
  118. val=1;
  119. for(i=0; i<R; i++)
  120. {
  121. for(j=0; j<C; j++)
  122. sfll(arr[i][j]);
  123. }
  124. ans=0;
  125. er=R-1;
  126. ec=C-1;
  127. Q.a=0;
  128. Q.b=0;
  129. Q.cost=arr[0][0];
  130. q.push(Q);
  131. ans=arr[0][0];
  132. key=0;
  133. arr[0][0]=-1;
  134. if(er!=0 || ec!=0)
  135. {
  136. while(!q.empty())
  137. {
  138. Q=q.top();
  139. q.pop();
  140. arr[Q.a][Q.b]=-1;
  141. for(i=0; i<2; i++)
  142. {
  143. x=Q.a+xx[i];
  144. y=Q.b+yy[i];
  145. if((x>=0 && y>=0) && (x<R && y<C))
  146. {
  147. if(arr[x][y]>=0)
  148. {
  149. P.a=x;
  150. P.b=y;
  151. P.cost=Q.cost+arr[x][y];
  152. if(x==er && y==ec)
  153. {
  154. ans=P.cost;
  155. key=1;
  156. break;
  157. }
  158. else
  159. {
  160. if(ar[P.a][P.b]>P.cost) // get WA for this line and get TLE if use ar[P.a][P.b]>=P.cost
  161. {
  162. ar[P.a][P.b]=P.cost;
  163. q.push(P);
  164. }
  165. }
  166. }
  167. }
  168. }
  169. if(key) break;
  170. }
  171. }
  172. pfll(ans);
  173. for(i=0; i<sz; i++)
  174. {
  175. for(j=0; j<sz; j++)
  176. {
  177. arr[i][j]=0;
  178. ar[i][j]=9999999999;
  179. }
  180. }
  181. ln=q.size();
  182. for(i=0;i<ln;i++)
  183. {
  184. q.pop();
  185. }
  186. }
  187. return 0;
  188. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement