[C++] 너비 우선 탐색

칼든개구리·2025년 4월 24일
0
post-thumbnail

너비 우선 탐색으로 모든 노드를 순회하는 함수 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;
 }
profile
메타쏭이

0개의 댓글