Advertisement
a53

labirint

a53
Feb 11th, 2018
208
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.15 KB | None | 0 0
  1. #include <fstream>
  2. #include <queue>
  3. #define N 1001
  4. using namespace std;
  5. const int dx[]={-1,0,1, 0},
  6. dy[]={ 0,1,0,-1};
  7. int n,a[N][N],rez,v[N][N],pas=1<<16;
  8. queue <pair<int,int>> Q;
  9.  
  10. int Lee(int k)
  11. {
  12. for(int i=1;i<=n;++i)
  13. for(int j=1;j<=n;++j)
  14. v[i][j]=0;
  15. if(a[1][1]<=k)
  16. Q.push(make_pair(1,1));
  17. else
  18. return 0;
  19. while(Q.size()&&!v[n][n])
  20. {
  21. int x=Q.front().first;
  22. int y=Q.front().second;
  23. Q.pop();
  24. for(int i=0;i<4;++i)
  25. {
  26. int xx=x+dx[i];
  27. int yy=y+dy[i];
  28. if(!v[xx][yy]&&a[xx][yy]<=k)
  29. v[xx][yy]=1,Q.push(make_pair(xx, yy));
  30. }
  31. }
  32. while(Q.size())
  33. Q.pop();
  34. return v[n][n];
  35. }
  36.  
  37. int main()
  38. {
  39. ifstream f("labirint.in");
  40. f>>n;
  41. for(int i=1;i<=n;++i)
  42. for(int j=1;j<=n;++j)
  43. f>>a[i][j];
  44. f.close();
  45. for(int i=0;i<=n+1;++i)
  46. for(int j=0;j<=n+1;++j)
  47. v[i][j]=1;
  48. for(;pas;pas>>=1)
  49. if(!Lee(rez+pas))
  50. rez+=pas;
  51. ofstream g("labirint.out");
  52. g<<rez+1;
  53. g.close();
  54. return 0;
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement