P4568 [JLOI2011] 飛行路線

P4568 [JLOI2011] 飛行路線

題目描述

Alice 和 Bob 現在要乘飛機旅行,他們選擇了一家相對便宜的航空公司。該航空公司一共在 nnn 個城市設有業務,設這些城市分別標記為 000n?1n-1n?1,一共有 mmm 種航線,每種航線連接兩個城市,并且航線有一定的價格。

Alice 和 Bob 現在要從一個城市沿著航線到達另一個城市,途中可以進行轉機。航空公司對他們這次旅行也推出優惠,他們可以免費在最多 kkk 種航線上搭乘飛機。那么 Alice 和 Bob 這次出行最少花費多少?

輸入格式

第一行三個整數 n,m,kn,m,kn,m,k,分別表示城市數,航線數和免費乘坐次數。

接下來一行兩個整數 s,ts,ts,t,分別表示他們出行的起點城市編號和終點城市編號。

接下來 mmm 行,每行三個整數 a,b,ca,b,ca,b,c,表示存在一種航線,能從城市 aaa 到達城市 bbb,或從城市 bbb 到達城市 aaa,價格為 ccc

輸出格式

輸出一行一個整數,為最少花費。

輸入輸出樣例 #1

輸入 #1

5 6 1
0 4
0 1 5
1 2 5
2 3 5
3 4 5
2 3 3
0 2 100

輸出 #1

8

說明/提示

數據規模與約定

對于 30%30\%30% 的數據,2≤n≤502 \le n \le 502n501≤m≤3001 \le m \le 3001m300k=0k=0k=0

對于 50%50\%50% 的數據,2≤n≤6002 \le n \le 6002n6001≤m≤6×1031 \le m \le 6\times10^31m6×1030≤k≤10 \le k \le 10k1

對于 100%100\%100% 的數據,2≤n≤1042 \le n \le 10^42n1041≤m≤5×1041 \le m \le 5\times 10^41m5×1040≤k≤100 \le k \le 100k100≤s,t,a,b<n0\le s,t,a,b < n0s,t,a,b<na≠ba\ne ba=b0≤c≤1030\le c\le 10^30c103

另外存在一組 hack 數據。

對于這題,看似與 P1948 [USACO08JAN] Telephone Lines S 十分相像,都是在 k 次特殊機會下求最短路。但稍微有點不同。P1948 需要最小化最長邊,故其二分時的 check 相對簡單,可以采取二分策略。但本題要求最小化路徑,此時的 check 變為了能否在總花費不超過 mid 的情況下從 s 到達 t ,難度幾乎和原問題一樣。故我們可以考慮利用分層圖,將使用過的免費次數used_k 加入路徑狀態中,在尋最短路時更新兩種狀態:使用免費次數和不使用免費次數。最后從所有 used_k 中找到到 t 的最短路。

#include<bits/stdc++.h>
using namespace std;const int INF = INT_MAX;int main(){int n, m, k, s, t;cin >> n >> m >> k >> s >> t;vector<vector<pair<int, int>>> g(n);for(int i = 0; i < m; i++){int a, b, c;cin >> a >> b >> c;g[a].emplace_back(b, c);g[b].emplace_back(a, c);}vector<vector<int>> dist(n, vector<int>(k+1, INF));priority_queue<tuple<int, int, int>, vector<tuple<int, int, int>>, greater<>> pq;dist[s][0] = 0;pq.emplace(0, s, 0);while(!pq.empty()){auto [d, u, used_k] = pq.top();pq.pop();if(d > dist[u][used_k]) continue;for(auto i : g[u]){int v = i.first;int w = i.second;if(dist[u][used_k] + w < dist[v][used_k]){dist[v][used_k] = dist[u][used_k] + w;pq.emplace(dist[v][used_k], v, used_k); }if(used_k < k){if(dist[u][used_k] < dist[v][used_k+1]){dist[v][used_k+1] = dist[u][used_k];pq.emplace(dist[v][used_k+1], v, used_k+1);}}}}int ans = INF;for(int i = 0;i<=k;i++){if(dist[t][i]<ans) ans = dist[t][i];}cout<<ans;return 0;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/91370.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/91370.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/91370.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MySQL 中的聚簇索引和非聚簇索引的區別

MySQL 中的聚簇索引和非聚簇索引的區別 總結性回答 聚簇索引和非聚簇索引的主要區別在于索引的組織方式和數據存儲位置。聚簇索引決定了表中數據的物理存儲順序&#xff0c;一個表只能有一個聚簇索引&#xff1b;而非聚簇索引是獨立于數據存儲的額外結構&#xff0c;一個表可以…

全局異常處理,可以捕捉到過濾器中的異常嗎?

全局異常處理,可以捕捉到過濾器中的異常嗎? 全局異常處理器(如Spring的@ControllerAdvice+@ExceptionHandler)默認無法直接捕獲過濾器(Filter)中拋出的異常,這是由過濾器和Spring MVC的執行順序及職責邊界決定的。具體原因和解決方案如下: 一、為什么全局異常處理器默…

市政道路積水監測系統:守護城市雨天出行安全的 “智慧防線”

市政道路積水監測系統&#xff1a;守護城市雨天出行安全的 “智慧防線”柏峰【BF-DMJS】每逢汛期&#xff0c;強降雨引發的城市道路積水問題&#xff0c;不僅會造成交通擁堵&#xff0c;更可能危及行人和車輛安全&#xff0c;成為困擾城市管理的一大難題。傳統的積水監測主要依…

搭建HAProxy高可用負載均衡系統

一、HAProxy簡介Haproxy 是一個使用C語言編寫的自由及開放源代碼軟件&#xff0c;其提供高可用性、負載均衡&#xff0c;以及基于TCP和HTTP的應用程序代理。haproxy優點 1. Haproxy支持兩種代理模式 TCP&#xff08;四層&#xff09;和HTTP&#xff08;七層&#xff09;&#x…

GO語言 go get 下載 下來的包存放在哪里

在 Go 中&#xff0c;通過 go get&#xff08;或 Go Modules 下的自動下載&#xff09;獲取的第三方包&#xff0c;具體存儲位置取決于你是否啟用了 Go Modules&#xff08;推薦方式&#xff09;。? 1. 如果你使用了 Go Modules&#xff08;Go 1.11 默認開啟&#xff09;當前 …

PostgreSQL 14.4 ARM64 架構源碼編譯安裝指南

PostgreSQL 14.4 ARM64 架構源碼編譯安裝指南文章目錄PostgreSQL 14.4 ARM64 架構源碼編譯安裝指南說明環境要求操作系統1. 系統環境準備1.1 更新系統包1.2 創建 PostgreSQL 用戶2. 解壓 PostgreSQL 14.4 源碼包3. 配置編譯選項4. 編譯源代碼5. 安裝 PostgreSQL6. 初始化數據庫…

【科普】在STM32中有哪些定時器?

在 STM32 單片機中&#xff0c;定時器種類豐富&#xff0c;不同系列&#xff08;如 F1、F4、H7 等&#xff09;略有差異&#xff0c;以下是常見的定時器類型及核心特點&#xff1a;1. 基本定時器&#xff08;TIM6、TIM7&#xff09;功能&#xff1a;僅具備定時計數功能&#xf…

git使用秘訣(詳解0到1)

前言&#xff1a; 不知道大家有沒有使用git提交代碼或者拉取代碼的經歷&#xff0c;自從上一家公司實習結束以后&#xff0c;對git的使用歷歷在目&#xff0c;從一開始的add、commit到后來的pull都有著許多的疑惑。 自從有一次merge代碼以后&#xff0c;被師兄批了一頓以后(不小…

RHEL 9.5 離線安裝 Ansible 完整教程

文章目錄RHEL 9.5 離線安裝 Ansible 完整教程環境準備系統要求準備工作清單方法一&#xff1a;使用 RPM 包離線安裝步驟 1&#xff1a;在聯網機器上下載必要的 RPM 包步驟 2&#xff1a;創建本地倉庫元數據步驟 3&#xff1a;在離線服務器上安裝方法二&#xff1a;使用 Python …

44、鴻蒙HarmonyOS Next開發:視頻播放 (Video)組件和進度條 (Progress)組件的使用

目錄 視頻播放 (Video) 創建視頻組件 加載視頻資源 加載本地視頻 加載沙箱路徑視頻 加載網絡視頻 添加屬性 事件調用 Video控制器使用 其他說明 示例代碼 進度條 (Progress) 創建進度條 設置進度條樣式 場景示例 視頻播放 (Video) Video組件用于播放視頻文件并…

6、微服務架構常用十種設計模式

目錄 1、微服務架構 2、微服務架構的優點 3、微服務架構的缺點 4、何時使用微服務架構 5、微服務架構常用十種設計模式 ① 獨享數據庫&#xff08;Database per Microservice&#xff09; ② 事件源&#xff08;Event Sourcing&#xff09; ③ 命令和查詢職責分離&…

Docker 初學者需要了解的幾個知識點 (六):docker-compose.yml (ThinkPHP)

下面這個文 docker-compose.yml 文件定義了一個包含 PHP、Nginx、MySQL、Redis 的完整 ThinkPHP 開發環境&#xff0c;各配置項的含義如下&#xff1a;version: 3.8services:# PHP-FPM 服務php-fpm:image: php:8.1-fpmvolumes:- ./tp-demo:/var/www/html- ./php.ini:/usr/local…

TiDB 詳解

TiDB 詳解&#xff1a;架構、特性與應用實踐 TiDB 是 PingCAP 公司開發的開源分布式 NewSQL 數據庫&#xff0c;采用 “計算-存儲分離” 架構設計&#xff0c;兼具傳統關系型數據庫的 ACID 事務特性和 NoSQL 系統的水平擴展能力。以下是 TiDB 的全面技術解析。一、核心架構設計…

推客小程序商業模型設計:合規分傭體系×盈利模式×LTV提升策略

一、推客小程序的市場背景與商業價值在當今移動互聯網紅利逐漸消退的背景下&#xff0c;社交電商正成為流量增長的新突破口。推客小程序作為一種基于社交關系的分銷工具&#xff0c;完美融合了社交傳播與電商變現的雙重優勢&#xff0c;為企業和個人創業者提供了全新的商業機會…

Matlab處理多個循環的判斷的方式:

1、使用正則表達式&#xff1a;pattern strcat(\b, strjoin(tuple, \b|\b), \b);% 4. 逐行處理文件內容 modifiedContents {}; % 存儲修改后的內容 for i 1:length(fileContents)line fileContents{i};% 使用正則表達式檢查當前行是否包含元組中的任何元素if ~isempty(reg…

從字符串中“薅出”最長子串:LeetCode 340 Swift 解法全解析

文章目錄摘要描述題解答案題解代碼分析詳細解析&#xff1a;示例測試及結果結果解釋&#xff1a;時間復雜度總結摘要 在日常開發中&#xff0c;我們經常需要處理字符串&#xff0c;比如分析用戶輸入、文本挖掘、數據清洗等等。而這道題就特別實用&#xff1a;如何找到一個字符…

時序數據庫廠商 TDengine 發布 AI 原生的工業數據管理平臺 IDMP,“無問智推”改變數據消費范式

在工業企業越來越依賴數據驅動決策的今天&#xff0c;數據的獲取不再是難題&#xff0c;難的是從紛繁復雜的數據中提煉出有用的信息。而 AI 的崛起&#xff0c;正在重塑整個數據分析的邏輯。 7 月 29 日晚&#xff0c;TDengine 發布了一款全新產品 —— TDengine IDMP&#xf…

HBase、MongoDB 和 Redis 的區別詳解

這三者都是流行的 NoSQL 數據庫&#xff0c;但設計目標、數據模型和適用場景有顯著差異。以下是它們的核心對比&#xff1a; 1. 數據模型對比特性HBaseMongoDBRedis數據模型寬列存儲&#xff08;類似 BigTable&#xff09;文檔存儲&#xff08;BSON/JSON&#xff09;鍵值存儲&a…

設計模式之單例模式及其在多線程下的使用

很多時候&#xff0c;我們在使用類創建類的實例并不想可以創建很多實例對象&#xff0c;比如在數據庫連接的時候&#xff0c;對于一個數據庫的連接通常只需要連接池中的某個連接的實例&#xff0c;連接一次即可&#xff0c;對于session會話&#xff0c;用戶在訪問網頁做會話保持…

Apache Ignite 2.8 引入的新指標系統(New Metrics System)的完整說明

這段文檔是關于 Apache Ignite 2.8 引入的“新指標系統&#xff08;New Metrics System&#xff09;” 的完整說明。這是 Ignite 監控體系的一次重大升級&#xff0c;相比舊的、分散的統計方式&#xff0c;新系統更統一、靈活、可擴展。 我們來逐層拆解、通俗易懂地理解這個新…