๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ”ฅ PS(Problem Solving) ๐Ÿ”ฅ/BOJ

[BOJ] #1260 DFS์™€ BFS

by dar0m! 2019. 10. 13.
์‹œ๊ฐ„ ์ œํ•œ ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ ์ •๋‹ต ๋น„์œจ
2 ์ดˆ 128 MB 30.405%

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

 

1260๋ฒˆ: DFS์™€ BFS

์ฒซ์งธ ์ค„์— ์ •์ ์˜ ๊ฐœ์ˆ˜ N(1 ≤ N ≤ 1,000), ๊ฐ„์„ ์˜ ๊ฐœ์ˆ˜ M(1 ≤ M ≤ 10,000), ํƒ์ƒ‰์„ ์‹œ์ž‘ํ•  ์ •์ ์˜ ๋ฒˆํ˜ธ V๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋‹ค์Œ M๊ฐœ์˜ ์ค„์—๋Š” ๊ฐ„์„ ์ด ์—ฐ๊ฒฐํ•˜๋Š” ๋‘ ์ •์ ์˜ ๋ฒˆํ˜ธ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์–ด๋–ค ๋‘ ์ •์  ์‚ฌ์ด์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ฐ„์„ ์ด ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค. ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง€๋Š” ๊ฐ„์„ ์€ ์–‘๋ฐฉํ–ฅ์ด๋‹ค.

www.acmicpc.net

 

ํ•ด๊ฒฐ๋ฐฉ์•ˆ

๊ฐ๊ฐ DFS์™€ BFS๋ฅผ ๋Œ๋ ค์„œ ์ถœ๋ ฅํ•˜์˜€๋‹ค. ์ฃผ์˜ํ•ด์•ผํ•  ์ ์€ ๊ฐ„์„ ์€ ์–‘๋ฐฉํ–ฅ์ด๋ผ๋Š” ์ !

๋ฉ”๋ชจ๋ฆฌ ์‹œ๊ฐ„
25568 KB 20 ms
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
#include<iostream>
#include<algorithm>
#include<string.h>
#include<vector>
#include<queue>
using namespace std;
#define F(x,y,u,p) for(int x = 0; x<u; x++)for(int y = 0; y<p; y++)
int n, m, start, chk[1005];
vector<vector<int>> v;
void dfs(int start) {
    chk[start] = 1;
    printf("%d ", start);
    for (auto& e : v[start]) {
        if (chk[e]) continue;
        chk[e] = 1;        
        dfs(e);
    }
}
void bfs(int start) {
    queue<int> q;
    q.push(start);
    chk[start] = 1;
    while (!q.empty()) {
        int present = q.front();
        q.pop();
        printf("%d ", present);
        for (auto& e : v[present]) {
            if (chk[e]) continue;
            chk[e] = 1;
            q.push(e);
        }
    }
}
int main() {
    scanf("%d %d %d"&n, &m, &start);
    v.resize(n * n);
    for (int i = 0, a, b; i < m; i++) {
        scanf("%d %d"&a, &b);
        v[a].push_back(b);
        v[b].push_back(a);
    }
    F(i, j, v.size(), v[i].size()) {
        sort(v[i].begin(), v[i].end());
    }    
    dfs(start);
    printf("\n");
    memset(chk, 0sizeof(chk));
    bfs(start);
    return 0;
}
cs

 

๋Œ“๊ธ€