너비 우선 탐색으로 모든 노드를 순회하는 함수 solution()을 작성하세요. 시작 노드는 정수형 start로 주어집니다. graph배열은 [출발노드, 도착노드] 쌍이 들어 있는 배열입니다. 반환 값은 그래프의 시작노드로부터 모든 노드를 너비 우선 탐색한 경로가 순서대로 저장된 배열입니다.
#include <queue>
#include <unordered_map>
#include <unordered_set>
#include <vector>
using namespace std;
unordered_map<int, vector<int>> adjList;
vector<int> result>
void bfs(int start)
{
unordered_set<int> visited;
queue<int> q;
q.push(start);
visited.insert(start);
result.push_back(start);
while(!q.empty())
{
int node= q.front();
q.pop();
for(int neighbor: adjList[node])
{
if(visited.find(neighbor)==visited.end())
{
q.push(neighbor);
visited.insert(neighbor);
result.push_back(neighbor);
}
}
}
}
vector<int> solution(vector<pair<int, int>> graph, int start)
{
for(auto& edge:graph)
{
int u= edge.first;
int v= edge.second;
adjList[u].push_back(v);
}
bfs(start);
return result;
}