1. Python
def solution(n, computers):
answer = 0
visited = [0 for i in range(n)]
def dfs(x):
visited[x] = 1
for i in range(n):
if computers[x][i] and not visited[i]:
dfs(i)
for i in range(n):
if not visited[i]:
dfs(i)
answer += 1
return answer
2. C++
#include <string>
#include <vector>
using namespace std;
void dfs(vector<int> &visit, int x, int n, const vector<vector<int>> &computers){
visit[x] = 1;
for (int i = 0; i < n; i++){
if (computers[x][i] && !visit[i]) dfs(visit, i, n, computers);
}
}
int solution(int n, vector<vector<int>> computers) {
int answer = 0;
vector<int> visit(n);
for (int i = 0; i < n; i++){
if (!visit[i]){
dfs(visit, i, n, computers);
answer++;
}
}
return answer;
}
3. JavaScript
function solution(n, computers) {
var answer = 0;
let visit = Array.from({length: n},() => 0);
function dfs(x){
visit[x] = 1;
for (let i = 0; i < n; i++){
if(computers[x][i] && !visit[i]) dfs(i);
}
}
for (let i = 0; i < n; i++){
if (!visit[i]){
dfs(i);
answer++;
}
}
return answer;
}