시작점으로부터 BFS탐색하면서 이전 노드까지의 거리+1
양방향 주의해서 양쪽 방향 모두 벡터에 넣기
using namespace std;
#define MAXN 20001
vector<int> v[MAXN];
bool visited[MAXN]={false, };
int dist[MAXN]={0,};
int maxDist=0;
void BFS(int start){
queue<int> q;
q.push(start);
visited[start]=true;
int count=0;
while(!q.empty()){
int n=q.front();
q.pop();
for(int i=0;i < v[n].size(); i++){
if(!visited[v[n][i]]){
visited[v[n][i]]=true;
q.push(v[n][i]);
dist[v[n][i]]=dist[n]+1;
maxDist=max(maxDist,dist[n]+1);
}
else{
continue;
}
}
}
return;
}
int solution(int n, vector<vector<int>> edge) {
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]);
}
BFS(1);
for(int i=1;i<=n;i++){
cout<<dist[i]<<" ";
if(dist[i]==maxDist){
answer++;
}
}
return answer;
}