헝D의 일기장
article thumbnail

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.*;
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());
        int answer=0;
        
        int n = Integer.parseInt(st.nextToken());//정점
        int m = Integer.parseInt(st.nextToken());//간선
        
        List<Integer>[] graph= new ArrayList[n+1];
        boolean[] visited = new boolean[n+1];//방문여부 저장
        
        for(int i=0; i<=n; i++){
            graph[i]=new ArrayList<>();
        }
        
        for(int i=0 ; i<m; i++){
            st = new StringTokenizer(br.readLine());
            int a=Integer.parseInt(st.nextToken());
            int b=Integer.parseInt(st.nextToken());
            //양방향으로 넣어주기
            graph[a].add(b);
            graph[b].add(a);
        }
        
        for(int i=1; i<=n; i++){
            if(visited[i] == false){//방문안한 경우만
                Queue<Integer> q = new LinkedList<>();
                q.offer(i);
                
                while(!q.isEmpty()){
                    Integer temp=q.poll();
                    for(int j=0;j<graph[temp].size(); j++){
                        int next = graph[temp].get(j);
                        if(visited[next] == false){
                            visited[next] = true;
                            q.offer(next);
                        }
                    }
                }
                
                answer++;
            }
        }
        bw.write(Integer.toString(answer));
        
        bw.flush();
        br.close();
        bw.close();
        
        
    }
}
profile

헝D의 일기장

@헝D

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!