BOJ 1260 DFS와 BFS

1 개요[ | ]

BOJ 1260 DFS와 BFS

2 C++[ | ]

#include <bits/stdc++.h>
using namespace std;

int N, M, V;
vector<int> G[1001];
bool visited1[1001];
bool visited2[1001];
int u, v;

void dfs(int x) {
	if (visited1[x]) {
		return;
	}
	visited1[x] = true;
	printf("%d ", x);
	for (int i=0; i<G[x].size(); i++) {
		dfs(G[x][i]); 
	}
}

void bfs(int x) {
    queue<int> q;
	visited2[x] = true;
    q.push(x);
    printf("%d ", x);
	while(!q.empty()) {
	    u = q.front();
	    q.pop();
	    for(int i=0; i<G[u].size(); i++) {
	        v = G[u][i];
	        if(!visited2[v]) {
	            visited2[v] = true;
	            q.push(v);
                printf("%d ", v);
	        }
	    }
	}
}

int main() {
	scanf("%d %d %d", &N, &M, &V);
	for(int i=0; i<M; i++) {
		scanf("%d %d", &u, &v);
		G[u].push_back(v);
		G[v].push_back(u);
	}
	for(int i=1; i<=N; i++) {
	    sort(G[i].begin(), G[i].end());
	}
	dfs(V);
	printf("\n");
	bfs(V);
	printf("\n");
}