BOJ 1005 ACM Craft

2020. 11. 25. 19:30·알고리즘/BOJ

www.acmicpc.net/problem/1005

 

1005번: ACM Craft

첫째 줄에는 테스트케이스의 개수 T가 주어진다. 각 테스트 케이스는 다음과 같이 주어진다. 첫째 줄에 건물의 개수 N 과 건물간의 건설순서규칙의 총 개수 K이 주어진다. (건물의 번호는 1번부

www.acmicpc.net

 

위상 정렬 + DP 문제였다.

1번 노드에서 걸리는 작업을 모두 완료하고 2번과 3번 노드에서 작업을 시작할 수 있다.

2번 노드에서 걸리는 시간은 1초이지만, 3번 노드에서 걸리는 시간이 100 초기 때문에

4번 노드에서 작업을 시작하려면 1번 10초 + 3번 100초 가 걸리고

4번노드까지 마치면 120초가 정답이 된다.

 

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
36
37
38
39
40
41
42
43
44
45
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
 
inline int max(int x, int y) { return x > y ? x : y; }
int tc, n, m, u, v, w;
int val[1001], res[1001], deg[1001];
 
int main() {
    ios::sync_with_stdio(false); cin.tie(0);
 
    cin >> tc;
    while (tc--) {
        vector<int> a[1001];
        queue<int> q;
        fill(deg, deg + 1001, 0);
        fill(res, res + 1001, 0);
 
        cin >> n >> m;
        for (int i = 0; i < n; ++i) cin >> val[i];
 
        for (int i = 0; i < m; ++i) {
            cin >> u >> v;
            a[u - 1].push_back(v - 1);
            deg[v - 1]++;
        }
        cin >> w;
 
        for (int i = 0; i < n; ++i)
            if (!deg[i]) res[i] = val[i], q.push(i);
 
        for (int i = 0; i < n; ++i) {
            int cur = q.front(); q.pop();
            for (int nxt : a[cur]) {
                res[nxt] = max(res[nxt], val[nxt] + res[cur]);
                if (--deg[nxt] == 0) q.push(nxt);
            }
        }
        
        cout << res[w - 1] << '\n';
    }
 
    return 0;
}
Colored by Color Scripter
cs

 

31번 줄에서 차수가 0인 노드라면 자기 자신의 시간을 가져야 하니 담아주고,

36번째 줄에서 자기 자신과, 그 이전까지의 합 중에서 큰 것을 가져온다.

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

BOJ 3197 백조의 호수  (0) 2020.12.01
BOJ 1517 버블 소트  (0) 2020.11.26
BOJ 3055 탈출  (0) 2020.11.24
16236 아기 상어  (0) 2020.11.22
BOJ 11048 이동하기  (0) 2020.11.20
'알고리즘/BOJ' 카테고리의 다른 글
  • BOJ 3197 백조의 호수
  • BOJ 1517 버블 소트
  • BOJ 3055 탈출
  • 16236 아기 상어
khyu2
khyu2
  • khyu2
    dev log
    khyu2
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 알고리즘
        • BOJ
        • Programmers
        • Algorithm
        • SWEA
      • 개발
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    큐
    dfs
    유니온 파인드
    크루스칼
    코딩테스트 연습
    완전탐색
    dp
    행렬 제곱
    분할 정복
    BOJ
    팰린드롬
    완전 탐색
    MST
    GREEDY
    구현
    우선순위 큐
    트리
    피보나치 수
    다익스트라
    피사노 주기
    이분탐색
    SWEA
    조합
    소수
    냅색
    이분 탐색
    시뮬레이션
    프로그래머스
    BFS
    알고리즘
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
khyu2
BOJ 1005 ACM Craft
상단으로

티스토리툴바