728x90
반응형
문제는 다음과 같습니다.
https://www.acmicpc.net/problem/11724
import java.util.Scanner; public class Test11724{ static int N,M; static int visit[]; static int graph[][]; static void DFS(int x, int cnt) { visit[x]=cnt; for(int i=1; i<N+1; i++) { if(graph[x][i]==1 && visit[i]==0) { DFS(i,cnt); } } } public static void main(String[] args){ Scanner sc = new Scanner(System.in); N = sc.nextInt(); M = sc.nextInt(); graph = new int[N+1][N+1]; visit = new int[N+1]; for(int i=0; i<M; i++) { int x = sc.nextInt(); int y = sc.nextInt(); graph[x][y]=graph[y][x]=1; } int cnt=1; for(int i=1; i<=N; i++) { if(visit[i]==0) { DFS(i, cnt); cnt++; } } System.out.println(cnt-1); } }
결과는 다음과 같습니다.
728x90
반응형
'프로그래밍 > 알고리즘' 카테고리의 다른 글
백준 알고리즘 11403번 경로 찾기(DFS문제) !! (0) | 2017.10.18 |
---|---|
백준 알고리즘 1915번 가장 큰 정사각형!! (0) | 2017.10.17 |
백준 알고리즘 1260번 DFS와 BFS (0) | 2017.10.16 |
백준 알고리즘 2566번 최댓값!! (0) | 2017.10.16 |
백준 알고리즘 11052번 붕어빵 판매하기!! (0) | 2017.10.12 |