프로그래밍/백준
[C언어/DFS] 2468 : 안전 영역
JINJIN123
2022. 1. 9. 16:14
#include<stdio.h>
#include<string.h>
int visit[105][105]={0,};
int arr[105][105]={0,};
int t;
int dw[4]={0,0,1,-1};
int dh[4]={1,-1,0,0};
void dfs(int i,int k){
int w,h;
visit[i][k]=1;
for(int j=0;j<4;j++){
h=i+dh[j];
w=k+dw[j];
if(arr[h][w]>t&&visit[h][w]==0)
dfs(h,w);
}
}
int main(void){
int n,h_max=0,cnt,max;
scanf("%d",&n);
for(int i=1;i<=n;i++){
for(int k=1;k<=n;k++){
scanf("%d",&arr[i][k]);
if(h_max<arr[i][k])
h_max=arr[i][k];
}
}
max=1;//비가 안 올 경우
for(t=1;t<h_max;t++){
memset(visit,0,sizeof(visit));
cnt=0;
for(int i=1;i<=n;i++){
for(int k=1;k<=n;k++){
if(arr[i][k]>t&&visit[i][k]==0){
cnt++;
dfs(i,k);
}
}
}
if(max<cnt)
max=cnt;
}
printf("%d",max);
return 0;
}