백준 11724번 - 연결 요소의 개수

package baekjoon;

import java.util.Arrays;
import java.util.Scanner;

public class Exam11724 {
	static int N, M; // 정점, 간선
	static int map[][];
	static boolean visit[];
	static int x, y;
	static int cnt = 0;
	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		N = sc.nextInt();
		M = sc.nextInt();

		map = new int[N + 1][N + 1];
		visit = new boolean[N + 1];

		Arrays.fill(visit, false);

		for (int i = 0; i < M; i++) {
			x = sc.nextInt();
			y = sc.nextInt();
			map[x][y] = map[y][x] = 1;
		}

		for (int i = 1; i <= N; i++) {
			if (!visit[i]) {
				cnt++;
				travling(i);
			}
		}
		System.out.println(cnt);
	}

	static void travling(int start) {

		if (visit[start]) {
			return;
		}
		visit[start] = true;

		for (int i = 1; i <= N; i++) {
			if (map[start][i] == 1 && visit[start]) {
				travling(i);
			}
		}
	}
}