티스토리 뷰
https://www.acmicpc.net/problem/14716
DFS나 BFS를 이용하여 연결 요소(Connected Component)의 개수를 세준다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | #include <cstdio> int m,n,map[250][250],ans; int dx[8]={-1,-1,-1,0,0,1,1,1}; int dy[8]={-1,0,1,-1,1,-1,0,1}; void dfs(int x,int y) { map[x][y]=0; for(int i=0;i<8;i++) { int nx=x+dx[i],ny=y+dy[i]; if(nx<0 || nx>=m || ny<0 || ny>=n) continue; if(map[nx][ny]==1) dfs(nx,ny); } } int main() { scanf("%d %d",&m,&n); for(int i=0;i<m;i++) for(int j=0;j<n;j++) scanf("%d",&map[i][j]); for(int i=0;i<m;i++) for(int j=0;j<n;j++) if(map[i][j]==1) ans++,dfs(i,j); printf("%d\n",ans); return 0; } | cs |
'Algorithm > BOJ' 카테고리의 다른 글
1939 중량제한 (0) | 2018.02.23 |
---|---|
1941 소문난 칠공주 (0) | 2018.02.23 |
1213 팰린드롬 만들기 (0) | 2018.02.22 |
7507 올림픽 게임 (0) | 2018.02.20 |
1005 ACM Craft (0) | 2018.02.20 |