1260번: DFS & BFS (실버 2)

2023. 5. 5. 11:24·백준 (with JAVA)/그 외

1260번: DFS와 BFS (acmicpc.net)

 

1260번: DFS와 BFS

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

www.acmicpc.net

1. 문제 설명

 

 

 

 

2. 입출력 조건 및 예제

입력 조건

(1) 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 

(2) 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다.

(3) 어떤 두 정점 사이에 여러 개의 간선이 있을 수 있으며, 입력으로 주어지는 간선은 양방향이다.

 

출력 조건

(1) 첫째 줄에 DFS를 수행한 결과를, 그 다음 줄에는 BFS를 수행한 결과를 출력한다. 

( V부터 방문된 점을 순서대로 출력하면 된다. )

 

입출력 예제

 

 

 

3. 풀이 및 코드

: 두 문제에 대한 풀이는 이미 아래의 링크에서 설명하였기 때문에 여기서는 생략하겠다.

DFS (Depth First Search) (tistory.com)

BFS (Breadth First Search) (tistory.com)

 

( 단, DFS, BFS 모두 인접 행렬로 풀었다. )

 

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;
 
public class Main {
    static int N, M, V;
    static int[][] graph = new int[1001][1001];
    static boolean[] visited = new boolean[1001];
    static Queue<Integer> q = new LinkedList<>();
    
    static BufferedReader sc = new BufferedReader(new InputStreamReader(System.in));
    static StringBuilder sb = new StringBuilder();
    
    public static void main(String[] args) throws Exception {
        StringTokenizer st = new StringTokenizer(sc.readLine());
        
        N = Integer.parseInt(st.nextToken());
        M = Integer.parseInt(st.nextToken());
        V = Integer.parseInt(st.nextToken());
        
        for(int i=1; i<=M; i++) {
            st = new StringTokenizer(sc.readLine());
            int a = Integer.parseInt(st.nextToken());
            int b = Integer.parseInt(st.nextToken());
            
            // 양방향이므로
            graph[a][b] = 1;
            graph[b][a] = 1;
        }
        dfs(V);
        sb.append("\n");
        visited = new boolean[1001];
        
        bfs(V);
        System.out.println(sb);
    }
    
    static void dfs(int nodeIndex) {
        visited[nodeIndex] = true;
        
        sb.append(nodeIndex + " ");
        
        for(int i=1; i<=N; i++) {
            if(graph[nodeIndex][i] == 1 && !visited[i]) {
                dfs(i);
            }
        }
    }
    
    static void bfs(int nodeIndex) {
        q.add(nodeIndex);
        visited[nodeIndex] = true;
        
        while(!q.isEmpty()) {
            nodeIndex = q.poll();
            sb.append(nodeIndex + " ");
            
            for(int i=1; i<=N; i++) {
                if(graph[nodeIndex][i] == 1 && !visited[i]) {
                    q.add(i);
                    visited[i] = true;
                }
            }
        }
    }
}
Colored by Color Scripter
cs
저작자표시

'백준 (with JAVA) > 그 외' 카테고리의 다른 글

1753번: 최단 경로 (골드 4)  (0) 2023.05.06
1238번: 파티 (골드 3)  (0) 2023.05.05
'백준 (with JAVA)/그 외' 카테고리의 다른 글
  • 1753번: 최단 경로 (골드 4)
  • 1238번: 파티 (골드 3)
백_곰
백_곰
  • 백_곰
    친절한 코딩
    백_곰
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 알고리즘 (with JAVA)
        • 기본 알고리즘
        • 완전 탐색
        • 분할 정복 알고리즘
        • 동적 계획법
        • 탐욕법
        • 코딩 테스트 기출 문제
        • 코드트리 조별과제
      • 백준 (with JAVA)
        • 완전 탐색
        • 분할 정복
        • 그 외
      • 자바
        • 개발 환경 구축하기
        • 팁
        • 기본적인 개념
        • 컬렉션 프레임워크
        • 프로세스와 쓰레드
        • 지네릭스
        • 람다식
        • 스트림
        • 입출력 IO
        • 네트워킹
        • 열거형(enums)
        • java.lang 패키지
        • java.time 패키지
        • 유용한 클래스들
        • 형식화 클래스들
      • 안드로이드 with 자바
        • 응용 문제들
        • 자잘한 문제들
        • 오류 보고서
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      snail
      불안정 정렬
      Arrays
      유용한 클래스
      Collections Framework
      java.lang패키지
      문자 기반 스트림
      중간연산
      역직렬화
      선택 정렬
      file
      자바 개념
      map()
      다형성
      제자리 정렬
      안드로이드 스튜디오
      ServerSocket
      outputstream
      스트림
      코드트리
      소켓 프로그래밍
      TCP 소켓 프로그래밍
      알고스팟
      serializable
      코딩트리조별과제
      안정 정렬
      java.time 패키지
      InputStream
      람다식
      코딩테스트
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    백_곰
    1260번: DFS & BFS (실버 2)
    상단으로

    티스토리툴바