티스토리 뷰
1260번: DFS와 BFS
첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사
www.acmicpc.net
백준 소스코드 [C++] 1260 DFS와 BFS
#include <iostream>
#include <algorithm>
#include <queue>
#include <string.h>
#include <limits.h>
#include <vector>
#include <math.h>
#include <stack>
#include <bitset>
#include <string>
typedef long long ll;
using namespace std;
int n, m, v;
int graph[1001][1001];
bool dfsvisit[1001], bfsvisit[1001];
void input() {
cin >> n >> m >> v;
int S, E;
for (int i = 0;i < m;i++) {
cin >> S >> E;
graph[S][E]++;
graph[E][S]++;
}
}
void dfs(int a) {
cout << a << " ";
dfsvisit[a] = true;
for (int i = 1;i <= n;i++) {
if (graph[a][i] != 0 && dfsvisit[i] == false) {
dfsvisit[i] = true;
dfs(i);
}
}
return;
}
void bfs() {
queue <int> q;
q.push(v);
bfsvisit[v] = true;
while (q.empty() != true) {
int t = q.front();
q.pop();
for (int i = 1;i <= n;i++) {
if (graph[t][i] != 0 && bfsvisit[i] == false) {
q.push(i);
bfsvisit[i] = true;
}
}
cout << t << " ";
}
cout << '\n';
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
input();
dfs(v);
cout << '\n';
bfs();
return 0;
}
'백준' 카테고리의 다른 글
백준 소스코드 [C++] 13544 수열과 쿼리 3 (0) | 2020.11.14 |
---|---|
백준 소스코드 [C++] 16563 어려운 소인수분해 (0) | 2020.11.14 |
백준 소스코드 [C++] 16975 수열과 쿼리 21 (0) | 2020.11.12 |
백준 소스코드 [C++] 10999 구간 합 구하기 2 (0) | 2020.11.12 |
백준 소스코드 [C++] 18436 수열과 쿼리 37 (0) | 2020.11.11 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- HIG
- 벨만포드 알고리즘
- 최단경로 알고리즘
- 코딩대회
- WWDC16
- Testable
- 에드몬드 카프 알고리즘
- mach-o
- 네트워크 플로우
- 컴퓨터 추상화
- 강한 순환 참조
- 부스트캠프 6기
- CPU와 Memory
- WWDC19
- 벨만포드 시간복잡도
- IOS
- 포드 풀커슨 알고리즘
- 네트워크 유량
- test coverage
- 다익스트라 시간복잡도
- observeOn
- State Restoration
- WWDC17
- 최대 매칭
- MeTal
- CompositionalLayout
- WWDC21
- 최단경로문제
- rxswift
- 최단경로 문제
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함