#include <string>
#include <vector>
#include <iostream>

using namespace std;

int visited[200];
int answer = 0;

void dfs(vector<vector<int>>& connects, int idx, int group)
{
    if (visited[idx] != 0)
    {
        return ;        
    }
    
    visited[idx] = group;
    for (auto& c : connects[idx])
    {
        if (visited[c] == 0)
            dfs(connects, c, group);
    }
}

int solution(int n, vector<vector<int>> computers) {
    
    vector<vector<int>> connects(n, vector<int>());
    
    for (int i = 0; i < n; i++)
    {
        // cout << i << " ";
        for (int j = 0; j < n; j++)
        {
            if (i == j)
                continue;
            if (computers[i][j] == 1)
            {
                connects[i].push_back(j);
                // cout << j << " ";
            }
        }
        // cout << endl;
    }
    
    for (int i = 0; i < n; i++)
    {
        visited[i] = 0;
    }
    
    for (int i = 0; i < n; i++)
    {
        if (visited[i] == 0)
        {
            answer++;
            dfs(connects, i, answer);
        }
    }
    
    return answer;
}

+ Recent posts