반응형
기본적인 거리 계산 문제이다.
우선 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;
}
반응형
'알고리즘' 카테고리의 다른 글
[프로그래머스/C++] 게임 맵 최단거리 (0) | 2022.11.14 |
---|---|
[프로그래머스/C++] 타겟 넘버 (0) | 2022.11.14 |
[백준/2178][C++] 미로 탐색 (1) | 2022.11.02 |
[백준/1303][C++] 전쟁 - 전투 (0) | 2022.11.02 |
[백준/1260][C++] DFS와BFS (0) | 2022.11.02 |