[プログラマー]ネットワーク(c++)
[プログラマー]ネットワーク(c++)
質問へのアクセス
これはdfsの問題です.
すべてのノードを確認します.
ノードをチェックするときに自身に接続し、以前チェックしたことがない場合はチェックします.
以前にチェックした内容を表示するには、最大サイズの1次元配列が作成されます.
コード実装(C++)
#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;
}
Reference
この問題について([プログラマー]ネットワーク(c++)), 我々は、より多くの情報をここで見つけました
https://velog.io/@kpg0518/프로그래머스-네트워크c
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
#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;
}
Reference
この問題について([プログラマー]ネットワーク(c++)), 我々は、より多くの情報をここで見つけました https://velog.io/@kpg0518/프로그래머스-네트워크cテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol