1260번: DFS와 BFS

#include <stdio.h>
#include <vector>
#include <string.h>
#include <queue>
#include <algorithm>

using namespace std;
vector<int> v[1001]; // 백터 선언 
int visit[1001]; // 방문 체크 배열 
queue<int> q;

void dfs(int x){ //dfs 함수 
	printf("%d ",x);
	visit[x] = 1;
	for(int i=0;i<v[x].size();i++){
		if(visit[v[x][i]]==0)
			dfs(v[x][i]);

	}
}
void bfs(int x){
	q.push(x);
	visit[x] = 1;
	while(!q.empty()){
		int tmp = q.front();
		printf("%d ",tmp);
		for(int i=0;i<v[tmp].size();i++){
			if(visit[v[tmp][i]]==0){
				q.push(v[tmp][i]);
				visit[v[tmp][i]] =1;
			}
				
		}
		q.pop();
	}
}
int main(){
	int N,M,V;
	scanf("%d %d %d",&N,&M,&V);
	int tmp1,tmp2;
	for(int i=0;i<M;i++){
		scanf("%d %d",&tmp1,&tmp2);
		v[tmp1].push_back(tmp2);
		v[tmp2].push_back(tmp1);
	}

	for(int i=1;i<=N;i++){
		sort(v[i].begin(),v[i].end());
	}
	// 입력받는 부분
벡터는 넣는 순서대로 방문하기 때문에 정렬이 필요 - sor
	
	
	dfs(V)//dfs; 
	memset(visit, 0, sizeof(visit)); // visit배열을 0으로 초기화하는 함수 memset
	printf("\\n");
	bfs(V);
}