문제를 어떤 방식으로 해결하려 했는지 그 과정을 적어주세요. 초기에 접근한 방법과 최종 접근이 차이가 없으면 한개만 적어도 됩니다.
어떤 알고리즘 또는 기법을 사용해 문제를 해결했는지 알려주세요
#include <iostream>
#include <queue>
#include <vector>
#include <algorithm>
using namespace std;
int N, M, V;
vector<int> visitedD(1001); // DFS 위한 visited
void dfs(vector<vector<int>> v, int start) {
visitedD[start] = 1;
cout << start << " ";
for (int i = 0; i < v[start].size(); i++) {
int key = v[start][i];
if (visitedD[key] == 0) { // 방문하지 않았을 경우
dfs(v, key);
}
else
;
}
}
void bfs(vector<vector<int>> v) {
vector<int> visited(N + 1);
queue<int> q; // 큐 선언
q.push(V); // 하나씩 뒤에 넣어줌
visited[V] = 1; // 방문 확인
while (!q.empty()) { // 종료조건을 잘 생각해야함!
int start = q.front(); // 큐의 앞대가리를 대상으로 그래프 확인
cout << start << " ";
q.pop();
for (int i = 0; i < v[start].size(); i++) {
int key = v[start][i];
if (visited[key] == 0) { // 방문하지 않았을 경우
q.push(key); // 큐에 넣어줌
visited[key] = 1;
}
else;
}
}
}
int main() {
cin >> N >> M >> V;
vector<vector<int>> v(N+1);
// 2차원 벡터에 넣어줬음
for (int i = 0; i < M; i++) {
int a, b;
cin >> a >> b;
v[a].push_back(b);
v[b].push_back(a);
}
// 같을 때 숫자가 작은 것부터 탐색하기로 했으니깐,,, 정렬
for (int i = 1; i <= N; i++)
sort(v[i].begin(), v[i].end());
dfs(v, V);
cout << "\n";
bfs(v);
return 0;
}
솔루션에 접근하기 까지 아쉬웠던 부분 들을 적어주세요. 솔루션을 참조하고나서야 고친 점들을 적어주세요. 솔루션의 링크도 적어주세요. 막힘 없이 구현했다면, 생략해도 좋습니다.
해당 문제를 통해 배운 내용 들을 적어주세요. 어떤 알고리즘, 코딩 기법,자료구조 등을 알게됐다. 문법적 요소도 좋습니다. 크게 없으면 생략해도 좋습니다.