【代碼隨想錄算法訓練Day65】卡碼網47.參加科學大會、卡碼網94. 城市間貨物運輸 I

Day65 圖論第九天

卡碼網47.參加科學大會

#include <iostream>
#include <vector>
#include <list>
#include <queue>
#include <climits>
using namespace std; 
// 小頂堆
class mycomparison {
public:bool operator()(const pair<int, int>& lhs, const pair<int, int>& rhs) {return lhs.second > rhs.second;}
};
// 定義一個結構體來表示帶權重的邊
struct Edge {int to;  // 鄰接頂點int val; // 邊的權重Edge(int t, int w): to(t), val(w) {}  // 構造函數
};int main() {int n, m, p1, p2, val;cin >> n >> m;vector<list<Edge>> grid(n + 1);for(int i = 0; i < m; i++){cin >> p1 >> p2 >> val; // p1 指向 p2,權值為 valgrid[p1].push_back(Edge(p2, val));}int start = 1;  // 起點int end = n;    // 終點// 存儲從源點到每個節點的最短距離std::vector<int> minDist(n + 1, INT_MAX);// 記錄頂點是否被訪問過std::vector<bool> visited(n + 1, false); // 優先隊列中存放 pair<節點,源點到該節點的權值>priority_queue<pair<int, int>, vector<pair<int, int>>, mycomparison> pq;// 初始化隊列,源點到源點的距離為0,所以初始為0pq.push(pair<int, int>(start, 0)); minDist[start] = 0;  // 起始點到自身的距離為0while (!pq.empty()) {// 1. 第一步,選源點到哪個節點近且該節點未被訪問過 (通過優先級隊列來實現)// <節點, 源點到該節點的距離>pair<int, int> cur = pq.top(); pq.pop();if (visited[cur.first]) continue;// 2. 第二步,該最近節點被標記訪問過visited[cur.first] = true;// 3. 第三步,更新非訪問節點到源點的距離(即更新minDist數組)for (Edge edge : grid[cur.first]) { // 遍歷 cur指向的節點,cur指向的節點為 edge// cur指向的節點edge.to,這條邊的權值為 edge.valif (!visited[edge.to] && minDist[cur.first] + edge.val < minDist[edge.to]) { // 更新minDistminDist[edge.to] = minDist[cur.first] + edge.val;pq.push(pair<int, int>(edge.to, minDist[edge.to]));}}}if (minDist[end] == INT_MAX) cout << -1 << endl; // 不能到達終點else cout << minDist[end] << endl; // 到達終點最短路徑
}

卡碼網94. 城市間貨物運輸 I

#include <iostream>
#include <vector>
#include <list>
#include <climits>
using namespace std;int main() {int n, m, p1, p2, val;cin >> n >> m;vector<vector<int>> grid;// 將所有邊保存起來for(int i = 0; i < m; i++){cin >> p1 >> p2 >> val;// p1 指向 p2,權值為 valgrid.push_back({p1, p2, val});}int start = 1;  // 起點int end = n;    // 終點vector<int> minDist(n + 1 , INT_MAX);minDist[start] = 0;for (int i = 1; i < n; i++) { // 對所有邊 松弛 n-1 次for (vector<int> &side : grid) { // 每一次松弛,都是對所有邊進行松弛int from = side[0]; // 邊的出發點int to = side[1]; // 邊的到達點int price = side[2]; // 邊的權值// 松弛操作 // minDist[from] != INT_MAX 防止從未計算過的節點出發if (minDist[from] != INT_MAX && minDist[to] > minDist[from] + price) { minDist[to] = minDist[from] + price;  }}}if (minDist[end] == INT_MAX) cout << "unconnected" << endl; // 不能到達終點else cout << minDist[end] << endl; // 到達終點最短路徑}

這是什么啊,還是得好好再看一遍。

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

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

相關文章

Android Studio gradle下載失敗?!

Android Studio安裝后第一個工程&#xff0c;往往要下載gradle&#xff0c;而gradle的下載有的時候很慢&#xff0c;可以將下載好的gradle-x.x.x-all.zip放到指定目錄下&#xff1a; Windows下路徑&#xff1a; C:\Users\你的用戶名\.gradle\wrapper\dist\gradle-x.x.x-all\**…

python+pygame實現五子棋人機對戰之三

上回講過&#xff1a; pythonpygame實現五子棋人機對戰之一 pythonpygame實現五子棋人機對戰之二 界面已經有了&#xff0c;并且可以支持鼠標操作選擇菜單和人機對戰開始下棋了&#xff0c;那電腦是如何應手落子呢&#xff1f;以下內容是通用的類&#xff0c;全部放在utils.…

LiteOS 多線程編程

? 鴻蒙系統的多線程編程步驟&#xff1a; 1. 描述要創建的線程的屬性配置. attr: attributeosThreadAttr_t attr;//聲明一個線程屬性變量memset(&attr, 0, sizeof(attr));//memset改變一個內存單元上存的值為0//以下三個為必須設置的線程屬性attr.name "ledThread&q…

全球高端銷量第一 凱迪仕智能鎖建博會獲重磅大獎再次遙遙領先

2024年7月11日&#xff0c;第26屆中國廣州建博會圓滿落幕。Kaadas凱迪仕第11年受邀參展&#xff0c;憑借超吸睛的賽博風展館和重磅旗艦傳奇大師K70系列智能鎖震撼亮相&#xff0c;吸引抖音網紅云集打卡直播以及眾多主流及行業媒體聚集報道。在大家居建裝行業全球第一展的舞臺上…

問題清除指南|Dell OptiPlex 7070 升級 win11 開啟 TPM 2.0 教程

前言&#xff1a;最近想把實驗室臺式機的系統從 Windows 10 升級到 Windows 11&#xff0c;遇到一點小問題&#xff0c;在此記錄一下解決辦法。 ?? 注&#xff1a;本教程僅在 Dell OptiPlex 7070 臺式機系統中測試有效&#xff0c;并不保證其余型號機器適用此教程。 參考鏈接…

中國科學院地理所牛書麗團隊《Global Change Biology 》最新成果!

本文首發于“生態學者”微信公眾號&#xff01; 在全球氣候變化的背景下&#xff0c;干旱地區的擴張對生態系統的氮循環產生了深遠影響。氮同位素&#xff08;δ15N&#xff09;的天然豐度&#xff0c;尤其是土壤中的δ15N&#xff0c;是評估陸地生態系統氮循環動態和氮限制的關…

【ARMv8/v9 GIC 系列 1.7 -- GIC PPI | SPI | SGI | LPI 中斷使能配置概述】

請閱讀【ARM GICv3/v4 實戰學習 】 文章目錄 GIC 各種中斷使能配置PPIs(每個處理器私有中斷)SPIs(共享外設中斷)SGIs(軟件生成的中斷)LPIs(局部中斷)GIC 各種中斷使能配置 在ARM GICv3和GICv4架構中,不同類型的中斷(如PPIs、SPIs、SGIs和LPIs)可以通過不同的方式進…

分享:2024好的ai文章生成器下載資源 tzqsbic

在當今數字化的時代&#xff0c;ai技術的發展日新月異&#xff0c;為我們的生活和工作帶來了諸多便利。其中&#xff0c;ai文章生成器作為一項創新的工具&#xff0c;給當代人們帶來了很多好處&#xff0c;尤其是對于很多創作者&#xff0c;不僅能解決創作困難&#xff0c;而且…

【開發工具】webStrom2024版-永久使用

1、解壓文件 2、安裝步驟 先執行unistall-current-user.vbs&#xff0c;確保當前環境變量下沒有歷史使用記錄。再執行install-current-user.vbs。運行的時候&#xff0c;會有第一個彈窗&#xff0c;點擊確定&#xff0c;稍微等待一會&#xff0c;會出現 Done 的彈窗&#xff0…

【Linux】進程間通信之System V共享內存

&#x1f466;個人主頁&#xff1a;Weraphael ?&#x1f3fb;作者簡介&#xff1a;目前正在學習c和算法 ??專欄&#xff1a;Linux &#x1f40b; 希望大家多多支持&#xff0c;咱一起進步&#xff01;&#x1f601; 如果文章有啥瑕疵&#xff0c;希望大佬指點一二 如果文章對…

Prometheus+Grafana監控Linux主機

1、安裝Prometheus 1.1 、下載Prometheus 下載網址 https://github.com/prometheus/prometheus/releases選擇需要的版本 wget https://github.com/prometheus/prometheus/releases/download/v2.53.0/prometheus-2.53.0.linux-amd64.tar.gz1.2、安裝Prometheus軟件 1.2.1、…

解決鴻蒙開發中克隆項目無法簽名問題

文章目錄 問題描述問題分析解決方案 問題描述 在一個風和日麗的早晨&#xff0c;這是我學習鴻蒙開發的第四天&#xff0c;把文檔過了一遍的我準備看看別人的項目學習一下&#xff0c;于是就用git去clone了一個大佬的開源項目&#xff0c;在簽名的時候遇到了問題&#xff1a; h…

在攻防演練中遇到的一個“有馬蜂的蜜罐”

在攻防演練中遇到的一個“有馬蜂的蜜罐” 有趣的結論&#xff0c;請一路看到文章結尾 在前幾天的攻防演練中&#xff0c;我跟隊友的氣氛氛圍都很好&#xff0c;有說有笑&#xff0c;恐怕也是全場話最多、笑最多的隊伍了。 也是因為我們遇到了許多相當有趣的事情&#xff0c;其…

Spring JDBC 具名參數用法

Spring JDBC中具名參數的用法 maven引入Spring jdbc <dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.3.19</version></dependency> 在Spring配置中配置 <!-…

【leetcode】滑動窗口專題

文章目錄 1.長度最小的子數組2.無重復字符的最長子串3.最大連續1的個數III4.將x減小到0的最小操作數5.水果成籃6.找到字符串中所有字母異位詞7.串聯所有單詞的子串8.最小覆蓋子串 1.長度最小的子數組 leetcode 209.長度最小的子數組 看到這個題目&#xff0c;第一眼肯定想到的…

正則表達式控制everything等搜索工具更快速的對需要的內容進行檢索

正則表達式對文件搜索工具規則 表格模式 匹配模式描述abgr(ale)y匹配 “gray” 或 “grey”.匹配除換行符之外的任意單個字符[abc]匹配字符 “a”、“b” 或 “c” 中的任意一個[^abc]匹配除了 “a”、“b”、“c” 之外的任意單個字符[a-z]匹配小寫字母 a 到 z 之間的任意一…

科普文:深入理解Mybatis

概敘 (1) JDBC JDBC(Java Data Base Connection,java數據庫連接)是一種用于執行SQL語句的Java API,可以為多種關系數據庫提供統一訪問,它由一組用Java語言編寫的類和接口組成.JDBC提供了一種基準,據此可以構建更高級的工具和接口,使數據庫開發人員能夠編寫數據庫應用程序。 優點…

Vue3 + Echarts堆疊折線圖的tooltip不顯示問題

問題介紹 使用Echarts在Vue3Vite項目中繪制堆疊折線圖的的時候&#xff0c;tooltip總是不顯示&#xff0c;經過很長時間的排查和修改&#xff0c;最后發現是在使用上有錯誤導致的。 錯誤圖片展示 問題原因 由于Vue3底層使用proxy代理創建示例&#xff0c;使用其創建出來的實…

RDD 專項練習

RDD 專項練習 現有分數信息文件 scores.txt 班級ID 姓名 年齡 性別 科目 成績 12 張三 25 男 chinese 50 12 張三 25 男 math 60 12 張三 25 男 english 70 12 李四 20 男 chinese 50 12 李四 20 男 math 50 12 李四 20 男 english 50 12 王芳 19 女 chinese 70 12 王芳 19 女…

FPGA-Verilog-Vivado-軟件使用

這里寫目錄標題 1 軟件配置2 FPGA-7000使用2.1 運行啟動方式 1 軟件配置 編輯器綁定為Vscode&#xff0c;粘貼VS code運行文件的目錄&#xff0c;后綴參數保持不變&#xff1a; 如&#xff1a; D:/Users/xdwu/AppData/Local/Programs/Microsoft VS Code/Code.exe [file name]…