https://programmers.co.kr/learn/courses/30/lessons/49189
#include <string>
#include <vector>
#include <cstring>
#include <queue>
#include <iostream>
using namespace std;
const int MAX = 20001;
int map[MAX][MAX];
int visited[MAX];
queue<pair<int,int>> q; //노드 번호, 카운트
int answer = 0;
void bfs(int n){
int value = 0;
int current_count=0;
while(!q.empty()){
int num = q.front().first;
int count = q.front().second;
q.pop();
if(current_count < count){
value = 1;
current_count = count;
}
else if(current_count == count){
value +=1;
}
for(int i=2; i<=n; i++){
if(num != i && visited[i] == -1 && map[num][i] == 1){
visited[i] = 1;
q.push({i,count+1});
}
}
}
answer = value;
}
int solution(int n, vector<vector<int>> edge) {
for(int i=0; i<edge.size(); i++){
map[edge[i][0]][edge[i][1]] = 1;
map[edge[i][1]][edge[i][0]] = 1;
}
memset(visited,-1,sizeof(visited));
for(int i=2; i<=n; i++){
if(map[1][i] == 1) {
q.push({i,1});
visited[i] = 1;
}
}
bfs(n);
return answer;
}
'프로그래머스' 카테고리의 다른 글
메뉴 리뉴얼 C++ (0) | 2021.06.30 |
---|---|
신규 아이디 C++ (0) | 2021.06.28 |
기둥과 보 설치 C++ (0) | 2020.11.09 |
자물쇠와 열쇠 C++ (0) | 2020.11.03 |
괄호 변환 C++ (0) | 2020.11.02 |