-
[백준] 1260번 DFS와 BFS알고리즘/백준 2025. 5. 30. 19:46
아주 아주 오랜만에 풀다 보니까 사소한 실수들이 있었다. 익숙해지는 수밖에 없겠지. 문제 조건 중에 방문할 수 있는 정점이 여러 개라면 정점 번호가 작은 것부터 순회하라고 했다. 어차피 인덱스 번호 = 정점 번호라서 반복문 돌릴 때 1번부터 하면 된다.
#include <iostream> #include <vector> #include <queue> using namespace std; void dfs(int start); void bfs(); queue<int> q; bool map[1001][1001] = { false }; bool dfs_visited[1001] = { false }; bool bfs_visited[1001] = { false }; int N, M, start; int main() { cin >> N >> M >> start; for (int i = 0; i < M; ++i) { int v, u; cin >> v >> u; map[v][u] = true; map[u][v] = true; } dfs(start); cout << endl; q.push(start); bfs(); } void dfs(int start) { if (dfs_visited[start]) return; dfs_visited[start] = true; cout << start << " "; for (int i = 1; i <= N; ++i) if (map[start][i] && dfs_visited[i] == false) dfs(i); } void bfs() { while (!q.empty()) { int start = q.front(); q.pop(); bfs_visited[start] = true; cout << start << " "; for (int i = 1; i <= N; ++i) { if (bfs_visited[i]) continue; if (map[start][i] && bfs_visited[i] == false) { q.push(i); bfs_visited[i] = true; } } } }
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 2667번 단지번호 붙이기 (0) 2025.06.01 [백준] 2178번 미로 탐색 (0) 2025.05.30 [백준] 소수 찾기(1978번) (0) 2021.12.25 [백준] 구간 합 구하기(2042번) (0) 2021.09.19 [백준] 유기농 배추(1012번) (0) 2021.09.17