기술 블로그

3184번 양 본문

알고리즘 문제/BOJ

3184번 양

parkit 2019. 4. 30. 09:43
728x90
반응형

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





기초적인 BFS






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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#include <iostream>
#include <deque>
#include <list>
#include <queue>
#include <stack>
#include <cstdio>
#include <vector>
#include <cstring>
#include <string>
#include <math.h>
#include <algorithm>
#include <map>
#include <set>
#include <functional>
#include <unordered_map>  
#include <unordered_set>  
#include <tuple>
#include <sstream>
 
#pragma warning(disable:4996)  
#pragma comment(linker, "/STACK:336777216")
 
using namespace std;
 
bool visit[255][255= { false, };
 
int R = 0, C = 0, lv = 0, lk = 0, v = 0, k = 0;
 
int dy[4= { 01,0-1 };
int dx[4= { 10-10 };
 
char Map[255][255];
 
void DFS(int r, int c)
{
    if (Map[r][c] == 'v'++v;
    else if (Map[r][c] == 'k'++k;
 
    visit[r][c] = true;
 
    for (int i = 0; i < 4; i++)
    {
        int y = r + dy[i];
        int x = c + dx[i];
 
        if (y < 0 || y >= R || x < 0 || x >= C || Map[y][x] == '#' || visit[y][x]) continue;        
 
        DFS(y, x);
    }
}
 
int main(void)
{
    scanf("%d %d"&R, &C);
 
    for (int i = 0; i < R; i++)
        for (int j = 0; j < C; j++)
        {
            cin >> Map[i][j];
 
            if (Map[i][j] == 'v'++lv;        
            else if (Map[i][j] == 'k'++lk;        
        }
 
    for (int i = 0; i < R; i++)
        for (int j = 0; j < C; j++)    
            if (!visit[i][j] && (Map[i][j] == 'v' || Map[i][j] == 'k'))
            {            
                v = k = 0;
 
                DFS(i, j);
 
                if (k > v) lv -= v;
                else lk -= k;
            }
 
    printf("%d %d\n", lk, lv);
 
    return 0;
}
cs




728x90
반응형

'알고리즘 문제 > BOJ' 카테고리의 다른 글

1912번 연속합  (0) 2019.05.01
9207번 페그 솔리테어  (0) 2019.04.30
3967번 매직 스타  (0) 2019.04.23
16953번 A → B  (0) 2019.04.22
16969번 차량 번호판 2  (0) 2019.04.22