본문 바로가기
개발자/알고리즘

[BOJ] 1260번 BFS와 DFS

by D , 2019. 9. 21.
반응형


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

using namespace std;

int n,m,v;

bool check[1001];
vector a[1001];

void dfs(int v){
    check[v] = true;
    cout<<v<<" ";

    for(int i=0;i<a[v].size();i++){
        int node = a[v][i];
        if(check[node] == false){
            check[node] = true;
            dfs(node);
        }
    }
}

void bfs(int v){
    memset(check,false,sizeof(check));
    queue q;
    q.push(v);
    check[v] = true;

    while(!q.empty()){
        int node = q.front();
        cout<<node<<" ";
        q.pop();

        for(int i=0;i<a[node].size();i++){
            int node2 = a[node][i];
            if(check[node2] == false){
                q.push(node2);
                check[node2] = true;
            }
        }

    }
}

int main()
{
    cin>>n>>m>>v;

    for(int i=0;i<m;i++){
        int x,y;
        cin>>x>>y;
        a[x].push_back(y);
        a[y].push_back(x);
    }
    for(int i=0;i<a[i].size();i++){
        sort(a[i].begin(),a[i].end());
    }

    dfs(v);
    cout<<'\n';
    bfs(v);


    return 0;
}

 

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

 

1260번: DFS와 BFS

첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사이에 여러 개의 간선이 있을 수 있다. 입력으로 주어지는 간선은 양방향이다.

www.acmicpc.net

 

반응형

'개발자 > 알고리즘' 카테고리의 다른 글

[BOJ] 2667번 단지번호붙이기  (0) 2019.09.22
[BOJ] 11724번 연결 요소의 개수  (0) 2019.09.21
[BOJ] 15654번 N과 M(5) - 빠른 입출력  (0) 2019.09.19
[BOJ] 14501번 퇴사  (0) 2019.09.18
[BOJ] 1182번 부분수열의 합  (0) 2019.09.17