洛谷 B3647:【模板】Floyd 算法

【題目來源】
https://www.luogu.com.cn/problem/B3647

【題目描述】
給出一張由 n 個點 m 條邊組成的無向圖。
求出所有點對 (i,j) 之間的最短路徑。

【輸入格式】
第一行為兩個整數 n,m,分別代表點的個數和邊的條數。
接下來 m 行,每行三個整數 u,v,w,代表 u,v 之間存在一條邊權為 w 的邊。

【輸出格式】
輸出 n 行每行 n 個整數。
第 i 行的第 j 個整數代表從 i 到 j 的最短路徑。

【輸入樣例】
4 4
1 2 1
2 3 1
3 4 1
4 1 1

【輸出樣例】
0 1 2 1
1 0 1 2
2 1 0 1
1 2 1 0

【說明/提示】
對于 100% 的數據,n≤100,m≤4500,任意一條邊的權值 w 是正整數且 1?w?1000。

數據中可能存在重邊

【算法分析】
● Floyd 算法?(又稱 Floyd-Warshall 算法)是一種用于求解?
所有頂點對之間最短路徑?的動態規劃算法。它適用于?帶權有向圖或無向圖?,可以處理?正權邊和負權邊?(但不能有負權環)。

●?本題數據中可能存在重邊,若不處理,會有一個樣例不過。

若有重邊,處理方法是只保留權值最小的那條邊。代碼如下:

while(m--) {cin>>a>>b>>c;e[a][b]=min(e[a][b],c); //e[a][b]=c;e[b][a]=min(e[b][a],c); //e[b][a]=c;
}

●?若 e[i][i]<0,則存在負權環。

【算法代碼】

#include <bits/stdc++.h>
using namespace std;const int inf=0x3f3f3f3f;
int e[100][100];
int a,b,c;
int n,m;int main() {cin>>n>>m;for(int i=1; i<=n; i++) {for(int j=1; j<=n; j++) {if(i==j) e[i][j]=0;else e[i][j]=inf;}}while(m--) {cin>>a>>b>>c;e[a][b]=min(e[a][b],c); //e[a][b]=c;e[b][a]=min(e[b][a],c); //e[b][a]=c;}for(int k=1; k<=n; k++)for(int i=1; i<=n; i++)for(int j=1; j<=n; j++)if(e[i][j]>e[i][k]+e[k][j])e[i][j]=e[i][k]+e[k][j];for(int i=1; i<=n; i++) {for(int j=1; j<=n; j++) {cout<<e[i][j]<<" ";}cout<<endl;}return 0;
}/*
in:
4 4
1 2 1
2 3 1
3 4 1
4 1 1out:
0 1 2 1
1 0 1 2
2 1 0 1
1 2 1 0
*/



【參考文獻】
https://blog.csdn.net/ahalei/article/details/22038539

https://www.cnblogs.com/CLGYPYJ/p/17586069.html
?

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

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

相關文章

netlist

在電子設計自動化&#xff08;EDA&#xff09;中&#xff0c;網表&#xff08;Netlist&#xff09; 是描述電路設計連接關系的核心數據結構&#xff0c;本質上是電路元件&#xff08;如邏輯門、晶體管、模塊&#xff09;及其互連關系的 文本化或結構化表示。它是從抽象設計&…

Cadence學習筆記之---原理圖設計基本操作

目錄 01 | 引 言 02 | 環境描述 03 | 原理圖工具介紹 04 | 原理圖設計基本操作 05 | 生成頁間引用 06 | 元件自動編號 07 | 結 尾 01 | 引 言 書接上回&#xff0c;在前文中講述了怎樣制作常用的庫元件&#xff0c;如電阻、二極管&#xff0c;IC器件&#xff0c;以及怎…

【華為HCIP | 華為數通工程師】821—多選解析—第十七頁

多選835、IS-IS協議所使用的NSAP地址主要由哪幾個部分構成? A、AREA ID B、SEL C、DSCp D、SYSTEM ID 解析:NSAP地址:網絡服務訪問點(Network Service Access Point)是 OSI 協議中用于定位資源的地址。NSAP 的地址結構如圖所示,它由 IDP(Initial Domain …

Linux系統中命令設定臨時IP

1.查看ip ---ifconfig 進入指定的網絡接口 ifconfig ens160 建立服務器臨時IP ifconfig ens160 ip地址 network 系統進行重啟后&#xff0c;臨時IP將會消失 ip address add ip地址 dev 服務器 ---添加臨時ip ip address delete ip地址 dev 服務器 ---刪除臨時ip 設置ip&a…

深度學習之卷積神經網絡入門

一、引言 在深度學習蓬勃發展的今天&#xff0c;卷積神經網絡&#xff08;Convolutional Neural Network&#xff0c;簡稱 CNN&#xff09;憑借其在圖像識別、計算機視覺等領域的卓越表現&#xff0c;成為了人工智能領域的核心技術之一。從手寫數字識別到復雜的醫學影像分析&a…

使用RabbitMQ實現判題功能

這次主要選用RabbitMQ消息隊列來對判題服務和題目服務解耦&#xff0c;題目服務只需要向消息隊列發送消息&#xff0c;判題服務從消息隊列中取信息去執行判題&#xff0c;然后異步更新數據庫即可。 五一寶寶請快點跑~~~~~ 先回顧一下RabbitMQ &#xff08;1&#xff09;引入依…

HTML5后臺管理界面開發

HTML5后臺管理界面開發 隨著互聯網技術的快速發展&#xff0c;后臺管理系統在各個業務領域中扮演著越來越重要的角色。它不僅幫助企業管理數據、用戶和業務流程&#xff0c;也為決策提供了依據。本文將介紹如何使用HTML5開發一個簡單的后臺管理界面&#xff0c;并結合代碼示例…

Oracle 11g RAC手動打補丁詳細步驟

備份&#xff1a; 節點1&#xff1a; root用戶備份GI_home tar cvf Ghome_backup.tar /oracle/grid/crsoracle用戶備份ORACLE_HOME tar cvf ohome_backup.tar $ORACLE_HOME節點2&#xff1a; root用戶備份GI_home tar cvf Ghome_backup.tar /oracle/grid/crsoracle用戶備份…

xfce桌面漢化設置

文章目錄 漢化配置小結 漢化配置 檢查當前語言環境&#xff0c;執行指令locale&#xff0c;如果輸出的 LANG、LC_ALL 等未包含 zh_CN.UTF-8&#xff0c;需要設置中文環境。 安裝中文語言包 sudo apt update sudo apt install language-pack-zh-hans language-pack-zh-hant設置…

如何在IDEA中高效使用Test注解進行單元測試?

在軟件開發過程中&#xff0c;單元測試是保證代碼質量的重要手段之一。而IntelliJ IDEA作為一款強大的Java開發工具&#xff0c;提供了豐富的功能來支持JUnit測試&#xff0c;尤其是通過Test注解可以快速編寫和運行單元測試。那么&#xff0c;如何在IDEA中高效使用Test注解進行…

Linux 路由

Linux路由表 一&#xff1a;查看路由二&#xff1a;添加路由三&#xff1a;刪除路由四&#xff1a;路由測試五&#xff1a;路由選擇機制1.路由表2.路由匹配機制3.策略路由 示例1.多網卡分流2.VPN分流3.雙默認路由負載均衡 一&#xff1a;查看路由 # 查看 main 表 ip route sho…

x-cmd install | brows - 終端里的 GitHub Releases 瀏覽器,告別繁瑣下載!

目錄 核心功能與優勢安裝適用場景 還在為尋找 GitHub 項目的特定 Release 版本而苦惱嗎&#xff1f;還在網頁上翻來覆去地查找下載鏈接嗎&#xff1f;現在&#xff0c;有了 brows&#xff0c;一切都將變得簡單高效&#xff01; brows 是一款專為終端設計的 GitHub Releases 瀏覽…

Vue多地址代理端口調用

第一種方法 config.ts文件 配置多條代理服務端口 如下所示:proxy: {/app: {// 其他的端口target: http://125.124.5.117:12877/,changeOrigin: true}/api: {//默認的端口// http://192.168.31.53:5173/target: http://192.168.31.199:18777/,changeOrigin: true,rewrite: pat…

青少年編程與數學 02-018 C++數據結構與算法 10課題、搜索[查找]

青少年編程與數學 02-018 C數據結構與算法 10課題、搜索[查找] 一、線性搜索&#xff08;Linear Search&#xff09;原理實現步驟代碼示例&#xff08;C&#xff09;復雜度分析優缺點 二、二分搜索&#xff08;Binary Search&#xff09;原理代碼示例&#xff08;C&#xff09;…

Linux操作系統從入門到實戰(三)Linux基礎指令(上)

Linux操作系統從入門到實戰&#xff08;三&#xff09;Linux基礎指令&#xff08;上&#xff09; 前言一、ls 指令二、pwd三、cd四、touch 指令五、mkdir六、rmdir 指令和 rm 指令七、man 指令八、cp九、mv 指令十、cat 指令十一、 more 指令十二、less 指令十四、head 指令十五…

Java對象轉換的多種實現方式

Java對象轉換的多種實現方式 在Java開發中&#xff0c;對象轉換是一個常見的需求。特別是在不同層次間傳遞數據時&#xff0c;通常需要將一個對象轉換為另一個對象。雖然JSON序列化/反序列化是一種常見的方法&#xff0c;但在某些場景下可能并不是最佳選擇。本文將總結幾種常見…

頭歌實訓之索引

&#x1f31f; 各位看官好&#xff0c;我是maomi_9526&#xff01; &#x1f30d; 種一棵樹最好是十年前&#xff0c;其次是現在&#xff01; &#x1f680; 今天來學習C語言的相關知識。 &#x1f44d; 如果覺得這篇文章有幫助&#xff0c;歡迎您一鍵三連&#xff0c;分享給更…

Rundeck 介紹及安裝:自動化調度與執行工具

Rundeck介紹 概述&#xff1a;Rundeck 是什么&#xff1f; Rundeck 是一款開源的自動化調度和任務執行工具&#xff0c;專為運維場景設計&#xff0c;幫助工程師通過統一的平臺管理和執行跨系統、跨節點的任務。它由 PagerDuty 維護&#xff08;2016 年收購&#xff09;&#…

基于 Python 的自然語言處理系列(85):PPO 原理與實踐

&#x1f4cc; 本文介紹如何在 RLHF&#xff08;Reinforcement Learning with Human Feedback&#xff09;中使用 PPO&#xff08;Proximal Policy Optimization&#xff09;算法對語言模型進行強化學習微調。 &#x1f517; 官方文檔&#xff1a;trl PPOTrainer 一、引言&…

珍愛網:從降本增效到綠色低碳,數字化新基建價值凸顯

2024年12月24日&#xff0c;法大大聯合企業綠色發展研究院發布《2024簽約減碳與低碳辦公白皮書》&#xff0c;深入剖析電子簽在推動企業綠色低碳轉型中的關鍵作用&#xff0c;為企業實現環境、社會和治理&#xff08;ESG&#xff09;目標提供新思路。近期&#xff0c;法大大將陸…