https://school.programmers.co.kr/learn/courses/30/lessons/49189
1. 의사코드
1.1. 인접벡터에 집어넣기
1.2. bfs
1.3. 최대거리 계산
1.4. for문 : 최대거리에 있는 노드들 카운팅
2. 전체코드
#include <bits/stdc++.h>
using namespace std;
queue<int> q;
int visited[20004];
vector<int> adj[20004];
int max_distance;
int solution(int n, vector<vector<int>> edge) {
int answer = 0;
for(auto v:edge){
adj[v[0]].push_back(v[1]);
adj[v[1]].push_back(v[0]);
}
q.push(1);
visited[1]=1;
while(q.size()){
int now=q.front(); q.pop();
for(auto next : adj[now]){
if(visited[next]) continue;
q.push(next);
visited[next]+=visited[now]+1;
max_distance=max(max_distance,visited[next]);
}
}
for(int i=1;i<=n;++i){
if(visited[i]==max_distance) answer++;
}
return answer;
}
'Algorithm > bfs' 카테고리의 다른 글
백준 5014 스타트링크 c++ // bfs 를 사용하라. (dfs는 시간초과) (0) | 2024.03.04 |
---|---|
백준 13549 숨바꼭질3 c++ // pq를 이용한 bfs 구현방법 (0) | 2023.11.29 |
프로그래머스 거리두기확인하기 c++ // bfs, check함수 활용방법, 문자열을 배열처럼 활용하는방법 (0) | 2023.11.22 |
프로그래머스 게임맵 최단거리 c++ // 최단거리는 bfs (0) | 2023.10.11 |
백준 1926 c++ // bfs, 갯수카운팅 (0) | 2023.09.04 |