본문 바로가기

알고리즘문제풀이

[백준 16437]양 구출 작전

반응형

문제 https://www.acmicpc.net/problem/16437


1)문제 분류

-트리


2)문제 해결

- 재귀로 후위순회 방법으로 구현한다.



#include <iostream>

#include<vector>

using namespace std;

int N;

vector<int>vt[123458];

typedef struct Data

{

char T;

long long int Cnt;

}Data;

Data arr[123458];

long long int dfs(int idx)

{

long long int sum = 0;

for (int i = 0; i < vt[idx].size(); i++)

{

sum += dfs(vt[idx][i]);

}

if (arr[idx].T == 'S')

return arr[idx].Cnt + sum;

else

return (sum - arr[idx].Cnt >= 0) ? sum - arr[idx].Cnt : 0;

}

int main()

{

char a; int b, c;

cin >> N;

arr[1].T = 'S';

for (int i = 2; i <= N; i++)

{

cin >> a >> b >> c;

vt[c].push_back(i);

arr[i].T = a;

arr[i].Cnt = b;

}

cout<<dfs(1)<<endl;

}



반응형

'알고리즘문제풀이' 카테고리의 다른 글

[백준 2252]줄세우기  (0) 2019.04.25
위상정렬  (0) 2019.04.08
[백준 1068]트리  (0) 2019.02.27
[백준 4803] 트리  (0) 2019.02.27
[백준 11725]트리의 부모 찾기  (0) 2019.02.27