From 2189810eccb8269cd970dd53247422e9f2f6ef20 Mon Sep 17 00:00:00 2001 From: oncsr Date: Sun, 12 Oct 2025 20:08:12 +0900 Subject: [PATCH] =?UTF-8?q?[20251012]=20BOJ=20/=20P5=20/=20Kaka=20&=20Bebe?= =?UTF-8?q?=20/=20=EA=B6=8C=ED=98=81=EC=A4=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- khj20006/202510/12 BOJ P5 Kaka & Bebe.md | 41 ++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 khj20006/202510/12 BOJ P5 Kaka & Bebe.md diff --git a/khj20006/202510/12 BOJ P5 Kaka & Bebe.md b/khj20006/202510/12 BOJ P5 Kaka & Bebe.md new file mode 100644 index 00000000..b2708251 --- /dev/null +++ b/khj20006/202510/12 BOJ P5 Kaka & Bebe.md @@ -0,0 +1,41 @@ +```cpp +#include +using namespace std; + +int N, M; +vector>> v(1000); +vector> dist(1000, vector(1001, -1)); +priority_queue, vector>, greater<>> q; + +int main(){ + cin.tie(0)->sync_with_stdio(0); + + for(cin>>N>>M;M--;) { + int a,b,c,d; + cin>>a>>b>>c>>d; + v[a].emplace_back(b,c,d); + v[b].emplace_back(a,c,d); + } + + dist[0][0] = 0; + q.emplace(0,0,0); + while(!q.empty()) { + auto [d,n,k] = q.top(); q.pop(); + if(d > dist[n][k]) continue; + for(auto [i,x,y]:v[n]) if(k + x <= 1000) { + if(dist[i][k+x] == -1 || dist[i][k+x] > d+y) { + dist[i][k+x] = d+y; + q.emplace(d+y, i, k+x); + } + } + } + + int ans = -1; + for(int i=0;i<=1000;i++) if(dist[N-1][i] != -1 && dist[N-1][i] <= 1000) { + if(ans == -1) ans = dist[N-1][i] * i; + else ans = min(ans, dist[N-1][i] * i); + } + cout<