Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- int dx[8]={1,1,0,-1,-1,-1,0,1}; //direction vectors
- int dy[8]={0,1,1,1,0,-1,-1,-1}; //direction vectors
- int r,c,cx,cy;
- bool valid(int cx,int cy)
- {
- if(cx<0 || cx>=r || cy<0 || cy>=c)
- return false;
- return true;
- }
- main()
- {
- ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
- cin>>r>>c>>cx>>cy;
- int val=0;
- vector<vector<int>>mat(r,vector<int>(c));
- vector<vector<bool>>vis(r,vector<bool>(c,false));
- queue<pair<int,int>>q;
- int x,y,sz;pair<int,int>p;
- mat[cx][cy]=val;
- vis[cx][cy]=true;
- q.push({cx,cy});
- sz=1;val++;
- while(!q.empty())
- {
- p=q.front();
- x=p.first;y=p.second;
- q.pop();sz--;
- for(int i=0;i<8;i++){
- if(valid(x+dx[i],y+dy[i]) && !vis[x+dx[i]][y+dy[i]]){
- q.push({x+dx[i],y+dy[i]});
- vis[x+dx[i]][y+dy[i]]=true;
- mat[x+dx[i]][y+dy[i]]=val;
- }
- }
- if(sz==0){
- val++;
- sz=q.size();
- }
- }
- for(int i=0;i<r;i++){
- for(int j=0;j<c;j++){
- cout<<mat[i][j]<<' ';
- }
- cout<<endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement