알고리즘 ( C++ )/프로그래머스
[프로그래머스] (DFS/BFS) 네트워크 c++
kwoss2341
2021. 1. 7. 14:20
https://programmers.co.kr/learn/courses/30/lessons/43162
코딩테스트 연습 - 네트워크
네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있
programmers.co.kr
프로그래머스 네트워크문제
BFS 를 이용.
#include <string>
#include <vector>
#include <iostream>
#include <queue>
using namespace std;
int solution(int n, vector<vector<int>> computers) {
int answer = 0;
int visit[n]; //방문정점
vector <int> mycom[n]; //벡터 배열을 이용한 트리 구현
queue<int> q;
for(int i=0; i<n; i++) //방문 정점배열 초기화
{
visit[i]=0;
}
for(int i=0; i<n; i++) //mycom 초기화
{
for(int j=0; j<n; j++)
{
if(i==j) continue;
if(computers[i][j]==1)
{
mycom[i].push_back(j);
}
}
}
int start;
for(int i=0; i<n; i++) //BFS시작
{
if(visit[i]==1)
{
continue;
}
start=i;
while(1)
{
visit[start]=1;
for(int j=0; j<mycom[start].size(); j++)
{
if(visit[mycom[start][j]]==1) continue;
q.push(mycom[start][j]);
}
if(q.empty()) break;
start=q.front();
q.pop();
}
answer++; //네트워크 수
}
return answer;
}