Advertisement
a53

Lee

a53
Dec 18th, 2019
189
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.42 KB | None | 0 0
  1. #include <iostream>
  2. #include <queue>
  3. using namespace std;
  4. const int dx[]={0,1,-1,0};
  5. const int dy[]={1,0,0,-1};
  6. int n,a[101][101],cnt;
  7. int s1,s2,s3,s4,s5,s6;
  8. struct DIST
  9. {
  10. int x,y,z,w;
  11. };
  12. DIST save[1001];
  13.  
  14. int main()
  15. {
  16. cin>>n;
  17. for(int i=1;i<=n;++i)
  18. for(int j=1;j<=n;++j)
  19. cin>>a[i][j];
  20. int x,y,q,w,r,t;
  21. cin>>x>>y>>q>>w>>r>>t;
  22. queue < pair < int, int > > coada;
  23. coada.push(make_pair(x,y));
  24. int b[101][101]={0};
  25. b[x][y]=1;
  26. while(coada.empty()==0)
  27. {
  28. for(int dir=0;dir<4;++dir)
  29. {
  30. int ii=coada.front().first+dx[dir];
  31. int jj=coada.front().second+dy[dir];
  32. if(a[ii][jj]==0&&ii<=n&&ii>=1&&jj<=n&&jj>=1&&b[ii][jj]==0)
  33. {
  34. b[ii][jj]=b[coada.front().first][coada.front().second]+1;
  35. coada.push(make_pair(ii,jj));
  36. }
  37. }
  38. coada.pop();
  39. }
  40. save[++cnt].x=b[1][1]-1;
  41. save[cnt].y=b[q][w]-1;
  42. save[cnt].z=b[r][t]-1;
  43. save[cnt].w=b[n][n]-1;
  44. queue < pair < int, int > > coada1;
  45. coada=coada1;
  46. coada.push(make_pair(q,w));
  47. for(int i=1;i<=n;++i)
  48. for(int j=1;j<=n;++j)
  49. b[i][j]=0;
  50. b[q][w]=1;
  51. while(coada.empty()==0)
  52. {
  53. for(int dir=0;dir<4;++dir)
  54. {
  55. int ii=coada.front().first+dx[dir];
  56. int jj=coada.front().second+dy[dir];
  57. if(a[ii][jj]==0&&ii<=n&&ii>=1&&jj<=n&&jj>=1&&b[ii][jj]==0)
  58. {
  59. b[ii][jj]=b[coada.front().first][coada.front().second]+1;
  60. coada.push(make_pair(ii,jj));
  61. }
  62. }
  63. coada.pop();
  64. }
  65. save[++cnt].x=b[1][1]-1;
  66. save[cnt].y=b[x][y]-1;
  67. save[cnt].z=b[r][t]-1;
  68. save[cnt].w=b[n][n]-1;
  69. queue < pair < int, int > > coada2;
  70. coada=coada2;
  71. coada.push(make_pair(r,t));
  72. for(int i=1;i<=n;++i)
  73. for(int j=1;j<=n;++j)
  74. b[i][j]=0;
  75. b[r][t]=1;
  76. while(coada.empty()==0)
  77. {
  78. for(int dir=0;dir<4;++dir)
  79. {
  80. int ii=coada.front().first+dx[dir];
  81. int jj=coada.front().second+dy[dir];
  82. if(a[ii][jj]==0&&ii<=n&&ii>=1&&jj<=n&&jj>=1&&b[ii][jj]==0)
  83. {
  84. b[ii][jj]=b[coada.front().first][coada.front().second]+1;
  85. coada.push(make_pair(ii,jj));
  86. }
  87. }
  88. coada.pop();
  89. }
  90. save[++cnt].x=b[1][1]-1;
  91. save[cnt].y=b[q][w]-1;
  92. save[cnt].z=b[x][y]-1;
  93. save[cnt].w=b[n][n]-1;
  94. s1=save[1].x+save[1].y+save[2].z+save[3].w;
  95. s2=save[1].x+save[1].z+save[3].y+save[2].w;
  96. s3=save[2].x+save[2].y+save[1].z+save[3].w;
  97. s4=save[2].x+save[2].z+save[3].z+save[1].w;
  98. s5=save[3].x+save[3].z+save[1].y+save[2].w;
  99. s6=save[3].x+save[3].y+save[2].y+save[1].w;
  100. cout<<min(s1,min(s2,min(s3,min(s4,min(s5,s6)))));
  101. return 0;
  102. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement