#include<stdio.h>
int mat[1001][1001] = { 0 };
int visited[1001] = { 0 };
int x, y;
int queue[1001];
void dfs(int(* mat)[1001], int* visited, int v,int n)
{
visited[v] = 1;
for (int i = 1; i <= n; i++) {
if (mat[v][i] == 1 && mat[i][v] == 1 && visited[i] == 0)
{
printf("%d ", i);
dfs(mat, visited, i, n);
}
}
}
void bfs(int(*mat)[1001], int* visited, int v, int n,int *queue)
{
int front = 0;
int rear = 1;
int pop;
visited[v] = 1;
printf("%d ", v);
queue[0] = v;
while (front < rear)
{
pop = queue[front++];
for (int i = 1; i <= n; i++)
{
if (mat[pop][i] == 1 && visited[i] == 0)
{
printf("%d ", i);
visited[i] = 1;
queue[rear++] = i;
}
}
}
}
int main()
{
int N, M, V;
scanf("%d %d %d", &N , &M, &V);
for (int i = 0; i < M; i++)
{
scanf("%d %d", &x, &y);
mat[x][y] = 1;
mat[y][x] = 1;
}
printf("%d ", V);
dfs(mat, visited, V,N);
printf("\n");
for (int i = 1; i <= N; i++)
{
visited[i] = 0;
}
bfs(mat, visited, V, N,queue);
}
스택구현과 큐 구현을 부분적으로 하는게 제법 재미있었지만 요즘 들어 좀 초조함이 드는 것 같다..
이 글은 코딩 꼬꼬마 시절에 푼 문제를 보관한 글로 네이버에 저장해둔 글을 옮긴 글입니다.
혹시나 참고하시는 부분에 이상한 부분이나 질문이 생긴다면 남겨주시면 친절히 답변 드리겠습니다.
728x90
'알고리즘 기초시절' 카테고리의 다른 글
백준 (C언어)백준 14503 로봇청소기(구현 시뮬레이션 맵탐색) (2) | 2023.01.04 |
---|---|
백준 (C언어)백준 10828번 스택 스택 구현문제 (0) | 2023.01.04 |
백준 (C언어)백준2667번 단지번호 붙히기 (0) | 2023.01.04 |
백준 2178 BFS미로탐색(C언어) (2) | 2023.01.04 |
백준 토마토 성공!! 1068번 BFS(C언어) (0) | 2023.01.04 |