백준 11724 (DFS)하고싶은거/알고리즘 문제풀이2024. 3. 30. 21:08
Table of Contents
과정
- 이미 문제에서 그래프라고 보여주기 때문에 DFS냐 BFS냐 만 고르면 되는데 이건 DFS가 맞다 싶어서 바로 DFS로 접근했다.
- 2606문제와 살짝 다른점은, 간선으로 연결된 정점 뭉치들의 개수를 알고 싶기 때문에,
연결될 때마다 answer을 추가하는게 아닌, DFS를 입력할 때 접근하지 않은 정점일 때! 이때 answer을 추가했다.
코드
#include <iostream>
#include <vector>
using namespace std;
int N = 0; // 정점의 개수
int M = 0; // 간선의 개수
int answer = 0; // 연결 요소의 개수
vector<vector<int>> Nodes(1001); // 해당 인덱스(정점)에 연결된 정점들 (간선들)
bool isvisited[1001]; // 해당 정점에 접근했는지 확인
void DFS(int num)
{
isvisited[num] = true;
for (int i : Nodes[num])
{
if(isvisited[i] == false)
DFS(i);
}
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr);cout.tie(nullptr);
cin >> N;
cin >> M;
for (int i = 0; i < M; i++)
{
int start_node = 0;
int end_node = 0;
cin >> start_node >> end_node;
Nodes[start_node].push_back(end_node);
Nodes[end_node].push_back(start_node);
}
for (int i = 1; i < N+1; i++)
{
if (isvisited[i] == false)
answer++;
DFS(i);
}
cout << answer;
return 0;
}
'하고싶은거 > 알고리즘 문제풀이' 카테고리의 다른 글
백준 1149 (DP) (0) | 2024.04.05 |
---|---|
백준 1107 ( 브루트 포스 방법) (0) | 2024.03.31 |
백준 7569 (BFS) (0) | 2024.03.30 |
백준 5430 (0) | 2024.03.28 |
백준 2606 (DFS) (1) | 2024.03.26 |
@ssIIIn :: 두 번째 저장공간
#개발 #게임 #일상
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!