#include <iostream> using namespace std; int max(int a, int b) { return a >= b ? a : b; } int main() { int T, N, K; cin >> T; for (int i = 0; i<T; i++) { int dp[1001] = { 0 }; int cost[1001] = { 0 }; int rule[100001][2] = { 0 }; cin >> N >> K; for (int i = 1; i <= N; i++) { cin >> cost[i]; dp[i] = cost[i]; } for (int i = 1; i <= K; i++) { cin >> rule[i][0] >> rule[i][1]; } for (int i = 2; i <= N; i++) for (int j = 1; j <= K; j++) { if (rule[j][1] == i) { int a = rule[j][0]; dp[i] = max(cost[i] + dp[a], dp[i]); } } cin >> N; cout << dp[N] << endl; } system("pause"); return 0; } |
BOJ에서는 틀렸다고 나온다
VS로 돌린 결과는 120, 39 나오는데 ,,왜 ㅠㅠ?
'알고리즘 문제 풀이 > 1DP_과제(~180615)' 카테고리의 다른 글
171016_6359_만취한 상범 (0) | 2017.10.16 |
---|---|
171014_1309_동물원 (0) | 2017.10.14 |
171012_2163_초콜릿 자르기 (0) | 2017.10.12 |
171012_11052_붕어빵 판매하기 (0) | 2017.10.12 |
171011_4673_셀프 넘버 (0) | 2017.10.11 |