보글보글 개발일지
article thumbnail
반응형

 

기본적인 거리 계산 문제이다.

우선 dist 배열을 -1로 초기화해 주었다.

이중 for문을 돌면서 방문할 노드를 찾는다.

#include <bits/stdc++.h>
using namespace std;

int n,m,k;
int board[102][102];
int dist[102][102];
int ans;
int dx[4]={1,0,-1,0};
int dy[4]={0,1,0,-1};
int main(void){
    ios::sync_with_stdio(0);
    cin.tie(0);

    cin>>n>>m>>k;
    for(int i=0;i<k;i++){
        int r,c;
        cin>>r>>c;
        board[r][c]=1;
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            dist[i][j]=-1;
        }
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            if(board[i][j]!=1||dist[i][j]!=-1) continue; 
            //방문도 안했고 보드가 1이면
            queue<pair<int,int>> q;
            q.push({i,j});
            dist[i][j]=0;
            int temp=0;
            while(!q.empty()){
                temp++;
                auto cur= q.front();
                q.pop();
                for(int dir=0;dir<4;dir++){
                    int nx=cur.first+dir[dx];
                    int ny=cur.second+dir[dy];
                    if(nx<1||ny<1||nx>n||ny>m) continue;
                    if(board[nx][ny]!=1||dist[nx][ny]!=-1) continue;
                    dist[nx][ny]=dist[cur.first][cur.second]+1;
                    q.push({nx,ny});
                }

            }
            ans = max(temp,ans);
        }
    }
    cout<<ans;
}

 

 

반응형
profile

보글보글 개발일지

@보글

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!