초기 네이버 기록/알고리즘(C)

백준 (C언어)백준 DFS와 BFS문제 1260번

뜨거운 개발자 2023. 1. 4. 00:09

#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