백준 BFS(너비 우선 탐색)

**백준 1260번 DFS와 BFS(C++)

develop.me.z 2020. 12. 30. 00:17

 

https://www.acmicpc.net/problem/1260

 

1260번: DFS와 BFS

첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사

www.acmicpc.net

 

#include <iostream>
#include <stack>
#include <queue>
#include <vector>
#include <algorithm>

using namespace std;

void dfs(int start, vector<int> graph[], bool check[]){
    if(!check[start]){
        check[start]=true;
        cout<<start<<" ";
        for(int i=0;i<graph[start].size();i++){
            dfs(graph[start][i],graph,check);
        }
    }
}

void bfs(int start, vector<int> graph[], bool check[]){
   queue<int> q;//queue선언
   q.push(start);
   check[start]=true;//start도 넣어야함 
   
   while(!q.empty()){
       int tmp=q.front();
       q.pop();
       cout<<tmp<<" ";
       for(int i=0;i<graph[tmp].size();i++){
           if(check[graph[tmp][i]]==false){
               check[graph[tmp][i]]=true;
               q.push(graph[tmp][i]);
           }
       }
   }
}

int main()
{
    int n, m, v;
    cin>>n>>m>>v;
    
    vector<int> *graph = new vector<int>[n+1];
    bool *check = new bool[n+1];
    fill(check, check+n+1, false);
    
    for(int i=0;i<m;i++){
        int u,v;
        cin>>u>>v;
        
        graph[u].push_back(v);
        graph[v].push_back(u);
    }
    
    for(int i=0;i<=n;i++){
        sort(graph[i].begin(), graph[i].end());
    }
    
    dfs(v, graph, check);
    cout<<endl;
    
    fill(check,check+n+1,false);
    
    bfs(v, graph, check);
    cout<<endl;
    
    return 0;
}

https://codingffler.tistory.com/6

<참고>

 

1. [C++]백준 알고리즘 1260번: DFS와 BFS - 코딩도치

안녕하세요. 코딩도치 입니다~ 오늘은 백준 알고리즘 1260번 DFS와 BFS 문제를 풀어보려고 합니다! DFS, BFS는 코딩 테스트나 알고리즘 대회 같은 곳에 꼭 등장하는 단골손님입니다. 그러니까 꼼꼼히

codingffler.tistory.com

 

 

1. [C++]백준 알고리즘 1260번: DFS와 BFS - 코딩도치

안녕하세요. 코딩도치 입니다~ 오늘은 백준 알고리즘 1260번 DFS와 BFS 문제를 풀어보려고 합니다! DFS, BFS는 코딩 테스트나 알고리즘 대회 같은 곳에 꼭 등장하는 단골손님입니다. 그러니까 꼼꼼히

codingffler.tistory.com