프로그래머스 가장 먼 노드 c++ 그래프 탐색

2023. 10. 25. 19:41알고리즘

#include <string>
#include <vector>
#include <queue>
#include <algorithm>
#include <iostream>

using namespace std;

int N, max_n;
vector<int> v[50001];
int visited[500001];

int solution(int n, vector<vector<int>> edge) {
    N=n;
    int answer = 0;
    
    for (int i=0;i<edge.size();i++){
        v[edge[i][0]].push_back(edge[i][1]);
        v[edge[i][1]].push_back(edge[i][0]);
    }    

    queue<int> q;
    
    q.push(1);
    visited[1]=1;
    while (!q.empty()){
        int x = q.front();
        q.pop();
        for (int i=0;i<v[x].size();i++){
            if (visited[v[x][i]]==0){
                visited[v[x][i]] = visited[x]+1;
                q.push(v[x][i]);
                max_n = max(max_n, visited[v[x][i]]);
            }            
        }
    }
    
    for (int i=1;i<=n;i++){
        if (visited[i] == max_n){
            answer++;
        }
    }
    return answer;
}