알고리즘/BAEKJOON
백준 11724번 연결 요소의 개수
pureworld
2018. 11. 9. 16:16
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 | #include <iostream> #include <vector> #include <queue> #include <algorithm> using namespace std; const int MAX = 1000 + 1; int N, M; vector<int> arr[MAX]; bool visited[MAX]; void DFS(int idx) { visited[idx] = true; for (int j = 0; j < arr[idx].size(); j++) { int connected = arr[idx][j]; if (!visited[connected]) { DFS(connected); } } } int main(void) { int count = 0; cin >> N >> M; for (int j = 1; j <= M; j++) { int a, b; cin >> a >> b; arr[a].push_back(b); //양방향 연결 arr[b].push_back(a); //양방향 연결 } for(int i=1;i<=N;i++){ if (!visited[i]) { //새로운 연결요소가 등장하면 묶어주고 +1 DFS(i); count++; } } cout << count; return 0; } | cs |
연결 요소의 뜻만 제대로 파악하면 어렵지 않은 문제였어요~~ 양방향 연결인걸 주의해주세요
문제 출처:https://www.acmicpc.net/problem/11724
문제 피드백,질문은 댓글로 부탁 드려요~!