Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- baekjoon
- 자격증
- C++
- verilog HDL
- hdl
- chip2chip
- UNIX
- SQL
- Beakjoon
- Xilinx
- 백준
- AMBA BUS
- Zynq
- FPGA
- boj
- java
- 정보처리기사
- verilog
- axi
- Backjoon
- 정처기
- Bus
- Vivado
- 리눅스
- 실기
- 코딩테스트
- HDLBits
- vitis
- linux
- amba
Archives
- Today
- Total
Hueestory
[1260] DFS와 BFS (C++) 본문
#include <iostream>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;
vector<vector<int>> A;
vector<bool> visited;
void DFS(int v);
void BFS(int v);
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int N, M, v; cin >> N >> M >> v;
A.resize(N + 1);
visited = vector<bool>(N + 1, false);
for (int i = 0; i < M; i++) {
int s, e;
cin >> s >> e;
A[s].push_back(e);
A[e].push_back(s);
}
for (int i = 0; i < A.size(); i++)
sort(A[i].begin(), A[i].end());
DFS(v);
cout << "\n";
fill(visited.begin(), visited.end(), false);
BFS(v);
cout << "\n";
return 0;
}
void DFS(int v) {
cout << v << " ";
visited[v] = true;
for (int i : A[v]) {
if (!visited[i])
DFS(i);
}
}
void BFS(int v) {
queue<int> Q;
Q.push(v);
visited[v] = true;
while (!Q.empty()) {
int x = Q.front();
Q.pop();
cout << x << " ";
for (int i : A[x]) {
if (!visited[i]) {
visited[i] = true;
Q.push(i);
}
}
}
}
1. 각 정점들은 인접 리스트로 받아온 후 sort를 사용해 정렬
2. DFS는 재귀함수로 구현
3. BFS는 queue를 사용해 구현
'PS(중단) > BOJ' 카테고리의 다른 글
[1167] 트리의 지름 (C++) (0) | 2024.05.07 |
---|---|
[2178] 미로 탐색 (C++) (0) | 2024.05.04 |
[1978] 소수 찾기 (C++) (1) | 2024.05.01 |
[13023] ABCDE (C++) (0) | 2024.05.01 |
[2023] 신기한 소수 (C++) (1) | 2024.05.01 |
Comments