#include <iostream>
#include <string>
#include <vector>
using namespace std;
// 그래프 data를 전역 변수 <- 모든 함수에서 공통적으로 볼 수 있게
int arr[1001][1001] = { 0, };
int cntNode; // 노드의 개수
int check[1001] = { 0, }; // 방문 체크
void dfs(int now) // 지금 now라는 노드에 있다.
{
check[now] = 1;
for (int next = 1; next <= cntNode; next++) {
if (arr[now][next] == 0)
continue;
if (check[next] == 1)
continue;
dfs(next);
}
}
// now에서 갈 수 있는 next는 어떤 data들을 확인하면 알 수 있을까요?
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int cntEdge;
cin >> cntNode >> cntEdge;
for (int i = 0; i < cntEdge; i++) {
int from, to;
cin >> from >> to;
// 단방향X
arr[from][to] = 1;
arr[to][from] = 1;
}
int ans = 0;
for (int i = 1; i <= cntNode; i++) {
if (check[i] == 1)
continue;
dfs(i);
ans += 1;
}
cout << ans;
return 0;
}
C++로 처음 풀은 그래프 문제😄
처음에 문제를 제대로 안읽어서 방향이 없는 그래프를 단방향 그래프로 생각하고 문제를 풀어서 애를 먹었다...
실력이 날로 늘어가는군요!!!!!!!!