Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- #include<queue>
- using namespace std;
- ifstream cin ("schior.in");
- ofstream cout ("schior.out");
- struct poz
- {
- int x,y;
- };
- queue<poz>q;
- int dx[8] = { 0, 1, 1, 1, 0, -1, -1, -1 };
- int dy[8] = { 1, 1, 0, -1, -1, -1, 0, 1 };
- int x1,y1,a[102][102],k,mini=10000,n,m,i,j,viz[102][102];
- int main()
- {
- cin>>n>>m;
- cin>>x1>>y1;
- for(i=1; i<=n; i++)
- for(j=1; j<=m; j++)
- cin>>a[i][j];
- for(i=0; i<=n+1; i++)
- viz[i][m+1]=viz[i][0]=a[i][0]=a[i][m+1]=10000;
- for(i=0; i<=m+1; i++)
- viz[n+1][i]=viz[0][i]=a[0][i]=a[n+1][i]=10000;
- poz p1,p2;
- p1.x=x1;
- p1.y=y1;
- q.push(p1);
- mini=a[p1.x][p1.y];
- viz[p1.x][p1.y]=1;
- while(!q.empty())
- {
- p1=q.front();
- q.pop();
- for(k=0; k<8; k++)
- {
- p2.x=p1.x+dx[k];
- p2.y=p1.y+dy[k];
- if(a[p2.x][p2.y]<=a[p1.x][p1.y]&&viz[p2.x][p2.y]==0)
- {
- viz[p2.x][p2.y]=1;
- if(a[p2.x][p2.y]<mini)
- mini=a[p2.x][p2.y];
- q.push(p2);
- }
- }
- }
- cout<<mini;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement