-
프로그래머스 - 가장 먼 노드 [C++]문제 풀이/백준 2023. 3. 22. 17:41반응형
이 문제는 bfs를 이용한 문제이다. 최단 경로로 움직였을 때 1번 노드에서 가장 먼 노드의 개수를 구하는 문제로, bfs를 실행한 뒤 visited 배열에서 구하면 되는 간단한 문제이다.
#include <string> #include <vector> #include <queue> #include <algorithm> #include <utility> using namespace std; #define MAX 20000 vector<int> edges[MAX + 1]; int visited[MAX + 1]; void bfs(int start) { queue<int> q; visited[start] = 1; q.push(start); while (!q.empty()) { int present = q.front(); q.pop(); for (int i = 0; i < edges[present].size(); i++) { int next = edges[present][i]; if (visited[next] == 0) { visited[next] = visited[present] + 1; q.push(next); } } } } int solution(int n, vector<vector<int>> edge) { int answer = 0; for (auto i : edge) { int a = i[0]; int b = i[1]; edges[a].push_back(b); edges[b].push_back(a); } bfs(1); int maxNode = -1; for (int i = 1; i <= n; i++) { maxNode = max(maxNode, visited[i]); } for (int i = 1; i <= n; i++) { if (visited[i] == maxNode) { answer++; } } return answer; }
반응형'문제 풀이 > 백준' 카테고리의 다른 글
백준 - 이차원 배열과 연산 (17140) [C++] (0) 2023.03.25 백준 - 알파벳 (1987) [C++] (0) 2023.03.24 백준 - 나무 재테크 (16235) [C++] (0) 2023.03.21 백준 - 하늘에서 별똥별이 빗발친다 (14658) [C++] (0) 2023.03.19 백준 - 문자열 게임 2 (20437) [C++] (0) 2023.03.19