티스토리 뷰
문제 링크입니다 : https://www.acmicpc.net/problem/16437
16437번: 양 구출 작전
2, 3, 5번에 사는 모든 양들은 1번 섬으로 갈 수 있지만 7번 섬에 사는 양들은 1번 섬으로 가기 위하여 6번 섬을 거쳐야 하는데 6번 섬에 사는 늑대들의 수가 7번 섬에 사는 양들의 수보다 많으므로
www.acmicpc.net
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
typedef long long ll;
int N;
vector<vector<int>> adj;
vector<ll> sheep;
ll getSaveSheepNum(int here) {
if(adj[here].size() == 0) return max(sheep[here], (ll)0);
ll ret = sheep[here];
for(int i = 0; i < adj[here].size(); i++) {
ret += getSaveSheepNum(adj[here][i]);
}
return max(ret, (ll)0);
}
int main() {
cin >> N;
adj.assign(N + 1, vector<int>());
sheep.assign(N + 1, 0);
char cmd;
ll num;
int u;
for(int i = 2; i <= N; i++) {
cin >> cmd >> num >> u;
if(cmd == 'S') sheep[i] = num;
else sheep[i] = -num;
adj[u].push_back(i);
}
cout << getSaveSheepNum(1);
return 0;
}
개발 환경 : vscode
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
'알고리즘 > 백준(BOJ)' 카테고리의 다른 글
백준 - 1351 무한 수열 (0) | 2020.08.21 |
---|---|
백준 - 1269 대칭 차집합 (0) | 2020.08.21 |
백준 - 1068 트리 (0) | 2020.08.20 |
백준 - 4803 트리 (0) | 2020.08.20 |
백준 - 17203 ∑|ΔEasyMAX| (0) | 2020.08.20 |
댓글