Jun's Development Journey

[BOJ] 9372 상근이의 여행 본문

BOJ/BFS

[BOJ] 9372 상근이의 여행

J_Jayce 2021. 2. 26. 15:24

문제

www.acmicpc.net/problem/9372

 

9372번: 상근이의 여행

첫 번째 줄에는 테스트 케이스의 수 T(T ≤ 100)가 주어지고, 각 테스트 케이스마다 다음과 같은 정보가 주어진다. 첫 번째 줄에는 국가의 수 N(2 ≤ N ≤ 1 000)과 비행기의 종류 M(1 ≤ M ≤ 10 000) 가

www.acmicpc.net

풀이

- BFS 활용 풀이

import java.io.*;
import java.util.*;


public class Main {
	static boolean[][] graph;
	static boolean[] visited;
	static int result;
	
	static void bfs(int N) {
		Queue<Integer> queue = new LinkedList<Integer>();
		queue.add(1);
		visited[1] = true;
		while(!queue.isEmpty()) {
			result++;
			int tmp = queue.poll();
			for(int i=1;i<=N;i++) {
				if(graph[tmp][i] && !visited[i]) {
					visited[i] = true;
					queue.add(i);
				}
			}
		}
	}
    public static void main(String[] args) throws IOException {
        //선언 및 입력
    	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    	StringTokenizer st;
    	StringBuilder sb = new StringBuilder();
    	int T,N,M;
    	T = Integer.parseInt(br.readLine());
    	
    	for(int i=0;i<T;i++) {
    		st = new StringTokenizer(br.readLine());
        	N = Integer.parseInt(st.nextToken());
        	M = Integer.parseInt(st.nextToken());
        	graph = new boolean[N+1][N+1];
        	visited = new boolean[N+1];
        	result = 0;
        	for(int j=0;j<M;j++) {
        		st = new StringTokenizer(br.readLine());
            	int from = Integer.parseInt(st.nextToken());
            	int to = Integer.parseInt(st.nextToken());
            	graph[from][to] = graph[to][from] = true;
        	}
        	bfs(N);
        	sb.append(result-1+"\n");
    	}
    	
    	System.out.println(sb);
    }
} 

'BOJ > BFS' 카테고리의 다른 글

[BOJ] 16956 늑대와 양  (0) 2021.04.07
[BOJ] 17836번 공주님을 구해라!  (0) 2021.04.06
[BOJ] 13913 숨바꼭질 4  (0) 2021.03.16