오답노트
[그래프] BOJ 11724번 연결 요소의 개수 본문
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
- 문제 파악
정점의 개수와 간선의 개수가 주어지고 연결 요소의 개수를 출력하라
연결 요소 : 간선으로 이어진 정점들을 한 개의 연결 요소로 볼 수 있다. 간선으로 이어지지 않고 단독으로 있는 정점도 연결요소로 볼 수 있다.
- 정답
#include "bits/stdc++.h"
using namespace std;
int arr[1002][1002];
int check[1002];
int ans;
int main()
{
cin.tie(0);
cout.tie(0);
ios::sync_with_stdio(0);
int n, m;
cin >> n >> m;
stack<int> st;
for (int i = 0; i < m; i++)
{
int a, b;
cin >> a >> b;
arr[a][b] = arr[b][a] = 1;
check[a] = check[b] = 1;
}
for (int i = 1; i <= n; i++)
check[i] = 1;
for (int i = 1; i < 1002; i++)
{
if (check[i])
{
st.push(i);
while (!st.empty())
{
int k = st.top();
st.pop();
check[k] = 0;
for (int j = 0; j < 1002; j++)
{
if (arr[k][j] && check[j])
{
st.push(j);
}
}
}
ans++;
}
}
cout << ans;
}
'C,C++ > 코딩테스트' 카테고리의 다른 글
[BFS] BOJ 13913번 숨박꼭질 4 (0) | 2022.05.22 |
---|---|
[그래프] BOJ 2667번 단지번호붙이기 (0) | 2022.05.21 |
[그래프] BOJ 10866번 덱 (0) | 2022.05.17 |
[그래프] BOJ 10845번 큐 (0) | 2022.05.17 |
[DP] 11722번 가장 긴 감소하는 부분 수열 (0) | 2022.05.17 |