Junior-Developer
Home
  • Category (316)
    • 문제풀이 (270)
      • 백준oj (201)
      • 프로그래머스 (53)
      • 명품 자바 프로그래밍(개정4판) (11)
      • 구름 (5)
    • 알고리즘 (6)
    • Node.js (2)
    • 체크리스트 (37)
블로그 내 검색
Home

Junior-Developer

1일 1커밋! 1일 1 백준!

  • 문제풀이/백준oj

    [백준OJ] 11724번 연결 요소의 개수

    2021. 5. 28.

    by. Hyeon-Uk

    반응형

    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


     

    -풀이-

    UNION&FIND 알고리즘을 이용하여, 입력받은 간선들을 이용하여 자신의 최고 조상을 설정한다.

    그런뒤 마지막으로, 최고조상의 개수만 세어주면, 연결요소의 개수를 셀 수 있다.

     

    -시간-

    Union Find 함수는 O(LogN)시간이 걸리는데, 초기화는 O(N)시간이 걸리므로, 총 O(N)이 된다.

     

    -코드-

    #include<iostream>
    #include<algorithm>
    #include<vector>
    using namespace std;
    
    int parent[1001];
    
    int find(int a) {
    	if (a == parent[a]) {
    		return a;
    	}
    	return find(parent[a]);
    }
    
    void union_parent(int a, int b) {
    	a = find(a);
    	b = find(b);
    
    	if (a < b) {
    		parent[b] = a;
    	}
    	else {
    		parent[a] = b;
    	}
    }
    
    int main() {
    	ios_base::sync_with_stdio(false);
    	cin.tie(NULL);
    	cout.tie(NULL);
    	int n, m;
    	cin >> n >> m;
    	for (int i = 1; i <= n; i++) {
    		parent[i] = i;
    	}
    
    	for (int i = 0; i < m; i++) {
    		int a, b;
    		cin >> a >> b;
    		union_parent(a, b);
    	}
    	int cnt = 0;
    	for (int i = 1; i <= n; i++) {
    		if (i == parent[i]) {
    			cnt++;
    		}
    	}
    	cout << cnt << "\n";
    	return 0;
    }
    

     

     

     

    반응형
    저작자표시 (새창열림)

    '문제풀이 > 백준oj' 카테고리의 다른 글

    [백준OJ] 7662번 이중 우선순위 큐  (0) 2021.06.02
    [백준OJ] 17219번 비밀번호 찾기  (0) 2021.05.29
    [백준OJ] 1439번 뒤집기  (0) 2021.05.21
    [백준OJ] 9007번 카누 선수  (0) 2021.05.20
    [백준OJ] 2268번 수들의 합  (0) 2021.05.19

    댓글

    관련글

    • [백준OJ] 7662번 이중 우선순위 큐 2021.06.02
    • [백준OJ] 17219번 비밀번호 찾기 2021.05.29
    • [백준OJ] 1439번 뒤집기 2021.05.21
    • [백준OJ] 9007번 카누 선수 2021.05.20
    맨 위로
전체 글 보기
Tistory 로그인
Tistory 로그아웃
로그아웃 글쓰기 관리

Today

Total

Powered by ⓒ Kakao Corp.

Designed by Nana
블로그 이미지
Hyeon-Uk

티스토리툴바