벡터를 활용한 dfs 를 사용하면 쉽게 풀 수 있었다.
동적할당을 사용하여 벡터를 이용하려면
vector<int> * a = new vector<int>[cnt + 1];
이런식으로 선언을 해야한다.
#include<iostream>
#include<vector>
using namespace std;
bool visited[100] = { false, };
int c = 0;
void dfs(vector<int>a[],int index) {
visited[index] = true;
for (int i = 0; i < a[index].size(); i++) {
int next = a[index][i];
if (!visited[next]) {
dfs(a,next);
c++;
}
}
}
int main() {
int cnt;
cin >> cnt;
vector<int> * a = new vector<int>[cnt + 1];
int num;
cin >> num;
while (num--) {
int num1, num2;
cin >> num1 >> num2;
a[num1].push_back(num2);
a[num2].push_back(num1);
}
dfs(a,1);
cout << c << endl;
}
'문제풀이 > 백준' 카테고리의 다른 글
[C++] 백준 7576번 문제풀이 (0) | 2021.02.19 |
---|---|
[C++] 백준 2630 문제풀이 (0) | 2021.02.16 |
[C++] 백준 1931 문제풀이 (0) | 2021.02.16 |
[C++] 백준 1927번 문제풀이 (0) | 2021.02.15 |
[C++] 백준 1389번 문제풀이 (0) | 2021.02.14 |