티스토리 뷰

알고리즘/BOJ

[백준] 14267 내리 갈굼

세진짱 2018. 7. 9. 15:46


문제를 해석하면 직속 상사에게 혼나면 아래도 다 혼난다

그 때 모두가 혼난 정도를 출력하면 된다


트리로 구성되기 때문에 혼나는 정도를 미리 저장해두고

dfs를 돌리며 자식들에게 값을 물려주면 된다


처음에 순서대로 방문한다고 혼자 착각해서 한번 틀렸다 ㅎㅎ..


소스코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
const int MAXN = 1e5 + 5;
int n, m;
vector<vector<int>> Graph;
int cost[MAXN];
bool check[MAXN];
int ans[MAXN];
void dfs(int x,int sum) {
    check[x] = true;
    int c = sum + cost[x];
    ans[x] = c;
    for (int i = 0; i < Graph[x].size(); i++) {
        int next = Graph[x][i];
        if (!check[next]) dfs(next, c);
    }
}
int main() {
    scanf(" %d %d"&n, &m);
    Graph.resize(n);
    for (int i = 0; i < n; i++) {
        int x; scanf(" %d"&x);
        if (i == 0continue;
        x--
        Graph[x].push_back(i);
    }
    for (int i = 0; i < m; i++) {
        int a, b; scanf(" %d %d"&a, &b);
        a--; cost[a] += b;
    }
    dfs(00); 
    for (int i = 0; i < n; i++printf("%d ", ans[i]); puts("");
}
cs


'알고리즘 > BOJ' 카테고리의 다른 글

[백준] 2405 세 수, 두 M  (1) 2018.07.09
[백준] 14268 내리 갈굼 2  (0) 2018.07.09
[백준] 15782 Calculate! 2  (0) 2018.07.09
[백준] 11963 High Card Low Card (Gold)  (0) 2018.07.06
[백준] 15686 치킨 배달  (2) 2018.07.05
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함