본문 바로가기
프로그래머스

가장 먼 노드 C++

by paysmile 2021. 4. 22.

https://programmers.co.kr/learn/courses/30/lessons/49189

 

코딩테스트 연습 - 가장 먼 노드

6 [[3, 6], [4, 3], [3, 2], [1, 3], [1, 2], [2, 4], [5, 2]] 3

programmers.co.kr

 

#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