반응형
난이도: Silver 2
번호: 25516
생성일: March 9, 2023 2:39 PM
알고리즘 분류: 그래프 이론, 그래프 탐색, 깊이 우선 탐색, 너비 우선 탐색, 트리
언어: C++
25516번: 거리가 k이하인 트리 노드에서 사과 수확하기
C++
#include <cstdio>
#include <queue>
#include <vector>
using namespace std;
int N, K;
vector<vector<int>> map;
vector<int> apple;
vector<bool> visit;
int BFS()
{
queue<int> Q;
Q.push(0);
visit[0] = true;
int depth = 0;
int cnt = apple[0];
while (!Q.empty() && depth < K)
{
int size = Q.size();
while (size--)
{
int cur = Q.front();
Q.pop();
for (int i : map[cur])
{
if (visit[i])
continue;
Q.push(i);
visit[i] = true;
cnt += apple[i];
}
}
depth++;
}
return cnt;
}
int main(void)
{
scanf("%d %d", &N, &K);
map.resize(N + 1);
apple.resize(N + 1);
visit.resize(N + 1);
for (int i = 0; i < N - 1; i++)
{
int a, b;
scanf("%d %d", &a, &b);
map[a].push_back(b);
map[b].push_back(a);
}
for (int i = 0; i < N; i++)
scanf("%d", &apple[i]);
printf("%d", BFS());
return (0);
}
반응형
'Algorithm > BOJ' 카테고리의 다른 글
[BOJ 14940] 쉬운 최단거리 C++ (0) | 2023.03.10 |
---|---|
[BOJ 18232] 텔레포트 정거장 C++ (0) | 2023.03.10 |
[BOJ 2667] 단지번호붙이기 C++ (0) | 2023.03.08 |
[BOJ 17198] Bucket Brigade C++ (0) | 2023.03.07 |
[BOJ 14248] 점프점프 C++ (0) | 2023.03.06 |