#84. [백준_C언어] 11724 : 연결 요소의 개수 \ 그래프 탐색

 

입력 코드

#include <stdio.h>

int b[1001];

int a(int c){
    if(b[c]==c){
        return c;
    }
    b[c]=a(b[c]);
    return a(b[c]);
}

int d(int c,int e){
    int f;
    f=a(c);
    if(f==a(e)){
        return 0;
    }
    b[a(e)]=f;
    return -1;
}

int main(){
    int c,e,f,g,z;
    scanf("%d %d",&c,&e);
    
    for(z=1;z<=c;z=z+1){
        b[z]=z;
    }
    
    for(z=0;z<e;z=z+1){
        scanf("%d %d",&f,&g);
        c=c+d(f,g);
    }
    printf("%d",c);
}

출처 www.acmicpc.net/source/19950296

 

 

코드 설명

#그래프이론 #그래프탐색 #너비우선탐색 #깊이우선탐색

 

 

 

문제 출처

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