본문 바로가기
JAVA

백준 11724

by Son 2023. 2. 24.

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 int[][] graph = new int[1001][1001];  //간선연결을 위한 2차원배열
	static int V;
	static int E;
	static boolean[] visited = new boolean[1001];
	
	public static void dfs(int index) {
		if(visited[index] == true)
			return;
		else {
			visited[index] = true;  //노드방문
			for(int i = 1; i <= V; i++) {  //노드 방문후 인접한 노드 검색
				if(graph[index][i] == 1) {
					dfs(i);
				}
			}
		}
	}
	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in); 
		
		V = sc.nextInt();  //정점의 개수
		E = sc.nextInt();   //간선의 개수
		
		int a,b;
		for(int i = 0; i < E; i++) {
			a = sc.nextInt();  
			b = sc.nextInt();
			
			// 간선 연결
			graph[a][b] = graph[b][a] = 1;
		}
		
		int result = 0 ;  //연결요소의 개수 초기화
		
		// dfs 탐색
		for(int i = 1; i <= V; i++) {
			if(visited[i] == false) { // 방문한 적 없는 노드라면 dfs.
				dfs(i);
				result++;
			}
		}
		
		System.out.println(result);
		
		sc.close();
		return;
	}
}

1.연결되어 있는 노드가 몇개나 있는지를 구하는문제

 

dfs를 활용

 

 

 

 

'JAVA' 카테고리의 다른 글

[백준] 2667번 DFS  (0) 2023.03.12
[백준 1707]  (0) 2023.02.28
백준 1260  (2) 2023.02.22
백준 13023번  (0) 2023.02.21
백준 14391  (0) 2023.02.19