-
백준 1446 지름길 c++알고리즘/백준 2022. 12. 24. 13:14반응형
#include <iostream> #include <vector> #include <algorithm> using namespace std; int n,d; vector<pair<int,int> > vec[10001]; int v[10001]; void input() { cin >> n >> d; for(int i=0; i<n; i++) { int a,b,c; cin >> a >> b >> c; vec[a].push_back({b,c}); } for(int i=0; i<10001; i++) { v[i] = i; } } void solve() { for(int i=0; i<=d; i++) { if(i != 0) { v[i] = min(v[i],v[i-1] + 1); } for(int j=0; j<vec[i].size(); j++) { v[vec[i][j].first] = min({v[i] + vec[i][j].second,v[i] + (vec[i][j].first - i), v[vec[i][j].first]}); } } cout << v[d]; } int main() { input(); solve(); }
다익스트라 공부가 하고싶어져 백준 다익스트라 게시판에서 제일 쉬운걸로 찾아봤는데 다익스트라를 쓰는게 아니었다.
고속도로의 최대 길이가 10000 이고 지름길이 최대 12개 있기 때문에 완전탐색을 사용해도 O(10000*12) 밖에 안된다.
0부터 도착지점까지 지름길을 탔을때와 그냥 달렸을때를 비교해주면서 최소값을 갱신해주면 된다.
**
c++ algorithm 헤더의 min 함수를 쓸때 인자 세개를 비교하려면 ({a,b,c}) 이런 식으로 중괄호로 묶어주면 된다!
728x90반응형'알고리즘 > 백준' 카테고리의 다른 글
[C++] 백준 16935 배열 돌리기 3 (1) 2022.12.24 백준 18352 특정 거리의 도시 찾기 c++ (0) 2022.12.24 백준 23843 콘센트 c++ (1) 2022.12.23 백준 7774 콘센트 c++ (0) 2022.12.21 백준 16166 서울의 지하철 c++ (2) 2022.12.16