백준 1260 DFS와 BFS(c++)

2022. 8. 12. 18:01·PS/깊이 우선 탐색, 너비 우선 탐색[DFS, BFS]

https://www.acmicpc.net/problem/1260

 

1260번: DFS와 BFS

첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사

www.acmicpc.net

<코드>

#include <iostream>
#include <vector>
#include <queue>
#include <cstring>
#define max 1001
using namespace std;
int n,m;
int v;
int board[max][max];
bool visited[max] = {false};
void dfs(int node)
{
		visited[node] = true;
		cout<<node<<' ';
		for(int next=1;next<=n;next++)
		{
		if(!visited[next] && board[node][next]){
			dfs(next);
		}
	}
}
void bfs(int node)
{
	visited[max] = {false};
	queue<int>q;
	visited[node] = true;
	q.push(node);
	while(!q.empty())
	{
		int cur = q.front();
		q.pop();
		cout<<cur<<' ';
		for(int next=1;next<=n;next++)
		{
			if(!visited[next] && board[cur][next]){
				visited[next] = true;
				q.push(next);
			}
		}
	}
	
}
int main()
{
	
	cin>>n>>m>>v;
	for(int i=0;i<m;i++)
	{
		int a,b;
		cin>>a>>b;
		board[a][b] = board[b][a] = 1;
	}
	dfs(v);
	cout<<'\n';
	memset(visited,0,sizeof(visited));
	bfs(v);
	
}

<풀이과정>

dfs는 노드의 깊이가 점점 커지는 방향으로 탐색을 진행하므로 스택을 이용한 풀이(후입선출)

bfs는 방문한 노드에서 인접한 노드를 방문하는 방법으로 큐를 이용한 풀이(선입선출)를 적용시키면 이해하기 쉬울 것이다.

저작자표시 비영리 변경금지 (새창열림)

'PS > 깊이 우선 탐색, 너비 우선 탐색[DFS, BFS]' 카테고리의 다른 글

백준 7576 토마토(c++)  (0) 2022.08.14
17086 아기 상어 2(c++)  (0) 2022.08.12
백준 14502 연구소(c++)  (0) 2022.08.09
백준 15686 치킨 배달(c++)  (0) 2022.08.09
백준 7562 나이트의 이동(c++)  (0) 2022.08.06
'PS/깊이 우선 탐색, 너비 우선 탐색[DFS, BFS]' 카테고리의 다른 글
  • 백준 7576 토마토(c++)
  • 17086 아기 상어 2(c++)
  • 백준 14502 연구소(c++)
  • 백준 15686 치킨 배달(c++)
SeungbeomKim
SeungbeomKim
[IT(PS, CS, SW, etc.) 지식 기록] Github : https://github.com/daily1313/
  • SeungbeomKim
    개발 블로그
    SeungbeomKim
  • 전체
    오늘
    어제
    • 분류 전체보기 (383)
      • 일상 (33)
        • 여행 (17)
        • 회고록 (9)
        • 리뷰 (7)
      • PS (138)
        • 그리디 알고리즘[Greedy] (25)
        • 정렬 알고리즘[Sort] (18)
        • 문자열 알고리즘[String] (14)
        • 동적 계획 알고리즘[DP] (17)
        • 깊이 우선 탐색, 너비 우선 탐색[DFS, BFS.. (34)
        • 재귀[Recursion] (2)
        • 백트래킹[Backtracking] (5)
        • 브루트포스 알고리즘[Bruteforce] (16)
        • 자료 구조[Data Structure] (4)
        • 분할 정복 알고리즘[Divide & Conquer.. (3)
      • CS (22)
      • Network (11)
      • Database (8)
        • Elasticsearch (3)
      • Linux (2)
      • JavaScript (4)
        • AngularJS (1)
      • Java (92)
        • Effective Java (5)
        • Java Concept (20)
        • Spring (61)
        • Design Pattern (3)
      • Python (2)
      • Vscode (1)
      • DevOps (43)
        • AWS (27)
        • Git (7)
        • Docker (6)
        • Nginx (1)
      • 자격증 (10)
        • SQL (4)
      • 사이드 프로젝트 (2)
        • MatJido (2)
      • 기타 (9)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 소개
  • 링크

    • Github
  • 공지사항

  • 인기 글

  • 태그

    Effective Java
    다이나믹 프로그래밍
    이펙티브 자바
    정보처리기사 필기
    sqld
    메타코딩
    너비 우선 탐색
    컴퓨터구조
    BFS
    일본여행
    docker
    정보처리기사 실기
    dp
    Wi-Fi
    Spring
    dfs
    정보처리기사
    AWS
    백트래킹
    springboot
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
SeungbeomKim
백준 1260 DFS와 BFS(c++)
상단으로

티스토리툴바