[프로그래머스 43162] 네트워크 C++

[프로그래머스 43162] 네트워크 C++

#include < string >

#include < vector >

#include < queue >

using namespace std ;

bool visited[ 201 ];

int result;

void bfs( int start, vector < vector < int > > v, int length) {

// 방문했으면 return

if (visited[start])

return ;

// 네트워크 존재하므로 result++

result + + ;

visited[start] = true ;

queue < int > q;

q.push(start);

while ( ! q.empty()) {

int node = q. front ();

node - - ;

q. pop ();

// 인근 노드 방문

for ( int i = 0 ; i < length; i + + ) {

// 연결되어있지 않으면 continue

if ( ! v[node][i])

continue ;

int next = i + 1 ;

// 연결되어있고 방문한 적이 없으면 push

if ( ! visited[next]) {

visited[next] = true ;

q.push(next);

}

}

}

}

int solution( int n, vector < vector < int > > computers) {

int answer = 0 ;

for ( int i = 1 ; i < = n; i + + ) {

bfs(i, computers, n);

}

answer = result;

return answer;

}

from http://gamedoridori.tistory.com/86 by ccl(A) rewrite - 2021-11-20 00:01:44