반응형
https://www.acmicpc.net/problem/1260
문제설명
dfs와 bfs 를 구현하여 방문 노드 순서대로 노드 값을 출력하는 것이다.
입력
4 5 1
1 2
1 3
1 4
2 4
3 4
출력
1 2 4 3
1 2 3 4
나의 사고과정
사고과정은 없다. 외울정도로 많이 해봤던 것이다.
소스코드
C++
#include <cstdio>
#include <cstring>
#include <queue>
using namespace std;
int n, m, start;
int tree[1001][1001] = {0,};
int visit[1001] = {0,};
void dfs(int v) {
visit[v] = 1;
printf("%d ", v);
for (int i = 1; i <= 1000; i++) {
if (tree[v][i] == 1 && visit[i] != 1) {
dfs(i);
}
}
}
void bfs(int v) {
queue<int> q;
q.push(v);
visit[v] = 1;
while (!q.empty()) {
int c = q.front(); q.pop();
printf("%d ", c);
for (int i = 1; i <= 1000; i++) {
if (tree[c][i] == 1 && visit[i] != 1) {
q.push(i);
visit[i] = 1;
}
}
}
}
int main() {
scanf("%d %d %d", &n, &m, &start);
for (int i = 0; i < m; i++) {
int a, b; scanf("%d %d", &a, &b);
tree[a][b] = 1;
tree[b][a] = 1;
}
dfs(start); printf("\n");
memset(visit, 0, sizeof(visit));
bfs(start);
}
결과
'Study > algorithms' 카테고리의 다른 글
백준 14225 부분수열의 합 (0) | 2022.07.14 |
---|---|
[백준] 2630. 색종이 만들기 (0) | 2020.03.15 |
[백준] 1021 회전하는 큐 (0) | 2020.03.08 |
[백준] 10866 덱 (0) | 2020.03.07 |
[백준] 1966 프린터 큐 (0) | 2020.03.07 |