코딩테스트/백준

백준 11724 : 연결 요소의 개수 _자바 Java

플래시🦥 2023. 1. 23.
반응형

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

 

11724번: 연결 요소의 개수

첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주

www.acmicpc.net


 

import java.util.*;

public class Main {

	static Queue<Integer> qu = new LinkedList<>();
	static int cnt =0 ;
	
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		
		int N = sc.nextInt();
		int M = sc.nextInt();
		
		int[][] arr = new int[N+1][N+1];
		boolean[] check = new boolean[N+1];
		
		for(int i=0;i<M;i++) {
			int a=sc.nextInt();
			int b=sc.nextInt();
			arr[a][b]=1;
			arr[b][a]=1;
		}
				
		bfs(arr,check,1);
		
		System.out.println(cnt);
	}// main()
	
	static void bfs(int[][]f, boolean[] c, int k ) {
		
		qu.add(k);
		c[k]=true;
		
		while(!qu.isEmpty()) {
			k=qu.poll();
			
			for(int i=1;i<f[k].length;i++) {
				if(f[i][k]==1&&!c[i]) {	//k와 인접한 정점을 확인
					qu.add(i);
					c[i]=true;
				}
			}
			
		}
		
		cnt++;
		
		for(int i=1;i<c.length;i++) {	//아직 확인 하지 않은 정점 체크
			if(!c[i])
				bfs(f,c,i);
		}
		
	}//bfs()
	
}// class Main
728x90
반응형

댓글