domybest100

그룹 지정

Aug 22nd, 2019
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.54 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstring>
  3. using namespace std;
  4. int gp[100001];
  5. int find(int p){
  6.     if (gp[p] == -1) return p;
  7.     else return gp[p] = find(gp[p]);
  8. }
  9. void merge(int a, int b){
  10.     a = find(a), b = find(b);//각 부모를 찾음
  11.     if(a!=b) gp[b] = a; //부모가 다르다면
  12. }
  13. int main() {
  14.     int N, M;
  15.     cin >> N >> M;
  16.     memset(gp, -1, sizeof(gp));
  17.     for (int i = 0; i < M; i++){
  18.         int a, b;
  19.         cin >> a >> b;
  20.         merge(a, b);
  21.     }
  22.     int ans = 0;
  23.     for (int i = 1; i <= N; i++) if (gp[i] == -1) ans++;
  24.     cout << ans << endl;
  25.     return 0;
  26. }
Add Comment
Please, Sign In to add comment