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);
}