CS/알고리즘_문제풀이(자바)

연결 요소의 개수

Jedy_Kim 2021. 9. 23. 10:41
728x90

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

// 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import java.util.*;
import java.io.*;
 
public class Main{
  
  public static void main(String[] args) throws Exception {
    
    BufferedReader br  = new BufferedReader(new InputStreamReader(System.in));  
    BufferedWriter bw  = new BufferedWriter(new OutputStreamWriter(System.out));
    StringTokenizer st = new StringTokenizer(br.readLine());
    ArrayList<ArrayList<Integer>> myGraph = new ArrayList<>();
    
    int N = Integer.parseInt(st.nextToken());
    int M = Integer.parseInt(st.nextToken());
    
    int[] visited = new int[N+1];
    int totCnt    = 0;
    
    // 인접리스트 구현
    // 초기화
    for(int i=0; i<N+1; i++) {
      myGraph.add(new ArrayList<Integer>());
    }
    // 값 받아오기
    for(int i=0; i<M; i++) {
      st = new StringTokenizer(br.readLine());
      int a = Integer.parseInt(st.nextToken());
      int b = Integer.parseInt(st.nextToken());
      
      myGraph.get(a).add(b);
      myGraph.get(b).add(a);
    }
    
    // BFS 구현
    Deque<Integer> deq = new ArrayDeque<>();
    
    for(int i=1; i<=N; i++) {
      if(visited[i] == 0) {
        deq.add(i);
        visited[i] = 1;
        while(!deq.isEmpty()) {
          int getV = deq.pop();
          int myLen = myGraph.get(getV).size();
          for(int j=0; j<myLen; j++) {
            int myVal = myGraph.get(getV).get(j);
            if(visited[myVal] == 0) {
              visited[myVal] = 1;
              deq.add(myVal);
            }
          }
        }
        totCnt++;
      }
    }
     
    bw.write(String.valueOf(totCnt));
    
    br.close();
    bw.flush();
    bw.close();
  }
  
}
cs

 

반응형

'CS > 알고리즘_문제풀이(자바)' 카테고리의 다른 글

2×n 타일링 2  (0) 2021.09.24
이분 그래프  (0) 2021.09.23
순열구하기  (0) 2021.09.22
N과 M (4)  (0) 2021.09.22
N과 M (3)  (0) 2021.09.22