dfs문제이다.
모든 node들을 검사한다.
node들을 검사할 때는 자신과 연결되어 있고, 이전에 검사한 적이 없으면, 검사한다.
이전에 검사한 것을 표시하기 위해, 일차원 배열을 최대 크기만큼 만들어준다.
#include <string>
#include <vector>
#include <cstring>
const int max = 201;
bool check[max];
using namespace std;
void dfs(int n, vector<vector<int>> computers){
for(int i = 0 ; i < computers[n].size() ; i++){
if(computers[n][i] && !check[i]){
check[i] = true;
dfs(i, computers);
}
}
}
int solution(int n, vector<vector<int>> computers) {
int answer = 0;
memset(check, false, sizeof(check));
for(int i = 0 ; i < computers.size() ; i++){
if(!check[i]){
check[i] = true;
dfs(i, computers);
answer++;
}
}
return answer;
}