[C++] Striver Approach | Clean and Easy to understand
```\n void dfs(int node,vector& visited,vector adjList[])\n    {\n       \n        for(auto it: adjList[node])\n        {\n            if(!visited[it])\n       
```\n void dfs(int node,vector<int>& visited,vector<int> adjList[])\n    {\n       \n        for(auto it: adjList[node])\n        {\n            if(!visited[it])\n            {\n                visited[it]=1;\n                dfs(it,visited,adjList);\n            }\n        }\n    }\n    int findCircleNum(vector<vector<int>>& isConnected) \n    {\n        int v=isConnected.size();\n        vector<int> visited(v,0);\n        vector<int> adjList[v];\n\t\t\n       ** // converting adjency matrix to list **\n\t\t\n        for(int i=0;i<v;i++)\n        {\n            for(int j=0;j<v;j++)\n            {\n                if(isConnected[i][j]==1 and i!=j)\n                {\n                    adjList[i].push_back(j);\n                    adjList[j].push_back(i);\n                }\n            }\n        }\n        int count=0;\n        for(int i=0;i<v;i++)\n        {\n            if(!visited[i])\n            {\n                count++;\n                dfs(i,visited,adjList);\n            }\n        }\n        \n        return count;\n    }
['Depth-First Search', 'Graph', 'C']