Algorithm/problem
백준 4883: 삼각 그래프 - dp
DingCoDing
2022. 9. 2. 22:21
반응형
https://www.acmicpc.net/problem/4883
4883번: 삼각 그래프
입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫째 줄에는 그래프의 행의 개수 N이 주어진다. (2 ≤ N ≤ 100,000) 다음 N개 줄에는 그래프의 i번째 행에 있는 정점의 비용이
www.acmicpc.net
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int num = 1;
while (1) {
int N;
cin >> N;
if (N == 0) break;
int a, b, c;
cin >> a >> b >> c;
c = b + c;
int dp[3], pre[3];
cin >> dp[0] >> dp[1] >> dp[2];
dp[0] += b;
dp[1] = min({dp[0], b, c}) + dp[1];
dp[2] = min({b, c, dp[1]}) + dp[2];
for (int i = 1; i <= N - 2; i++) {
int x, y, z;
pre[0] = dp[0];
pre[1] = dp[1];
pre[2] = dp[2];
cin >> x >> y >> z;
dp[0] = x + min(pre[0], pre[1]);
dp[1] = y + min({pre[0], pre[1], pre[2], dp[0]});
dp[2] = z + min({pre[1], pre[2], dp[1]});
}
cout << num++ << ". " << dp[1] << '\n';
}
return 0;
}
반응형