티스토리 뷰

Algorithm/BOJ

2583 영역 구하기

henry1214 2018. 7. 9. 17:28

https://www.acmicpc.net/problem/2583



DFS로 연결 요소의 개수를 세준다.



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
27
28
29
30
31
32
33
34
35
36
37
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
 
int m,n,k,a,b,c,d,sum,map[101][101];
int dx[4]={0,0,-1,1},dy[4]={-1,1,0,0};
vector<int> v;
 
void dfs(int x,int y)
{
    sum++,map[x][y]=1;
    for(int i=0;i<4;i++)
    {
        int nx=x+dx[i],ny=y+dy[i];
        if(nx<0 || nx>=|| ny<0 || ny>=n) continue;
        if(!map[nx][ny]) dfs(nx,ny);
    }
}
 
int main()
{
    scanf("%d %d %d",&m,&n,&k);
    while(k--)
    {
        scanf("%d %d %d %d",&a,&b,&c,&d);
        for(int i=b;i<d;i++for(int j=a;j<c;j++)
            map[i][j]=1;
    }
    for(int i=0;i<m;i++for(int j=0;j<n;j++)
        if(!map[i][j]) sum=0,dfs(i,j),v.push_back(sum);
    k=v.size();
    sort(v.begin(),v.end());
    printf("%d\n",k);
    for(int i=0;i<k;i++printf("%d ",v[i]);
    return 0;
}
cs


'Algorithm > BOJ' 카테고리의 다른 글

11724 연결 요소의 개수  (2) 2018.07.09
9498 시험 성적  (0) 2018.07.09
1924 2007년  (0) 2018.07.09
9375 패션왕 신해빈  (0) 2018.07.04
9009 피보나치  (0) 2018.07.03
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday