国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Acwing.854 Floyd求最短路 (Floyd算法)

這篇具有很好參考價(jià)值的文章主要介紹了Acwing.854 Floyd求最短路 (Floyd算法)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

題目

給定一個(gè)n個(gè)點(diǎn)m條邊的有向圖,圖中可能存在重邊和自環(huán),邊權(quán)可能為負(fù)數(shù)。
再給定k個(gè)詢問,每個(gè)詢問包含兩個(gè)整數(shù)x和y,表示查詢從點(diǎn)x到點(diǎn)y的最短距離,如果路徑不存在,則輸"impossible”。
數(shù)據(jù)保證圖中不存在負(fù)權(quán)回路。

輸入格式

第一行包含三個(gè)整數(shù)n, m, k
接下來m行,每行包含三個(gè)整數(shù)x, y,z,表示點(diǎn)x和點(diǎn)y之間存在一條有向邊,邊長為z。接下來k行,每行包含兩個(gè)整數(shù)x,y,表示詢問點(diǎn)x到點(diǎn)y的最短距離。

輸出格式

共k行,每行輸出一個(gè)整數(shù),表示詢問的結(jié)果,若詢問兩點(diǎn)間不存在路徑,則輸出"impossible”。

數(shù)據(jù)范圍

1≤n ≤200,1 ≤k≤n2
1 ≤m ≤20000,
圖中涉及邊長絕對(duì)值均不超過10000。

  • 輸入樣例:
3 3 2
1 2 1
2 3 2
1 3 1
2 1
1 3
  • 輸出樣例:
impossible
1

題解

#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 210,INF = 1e9;
int n, m,Q;
int d[N][N];
void floyd()
{
	for (int k = 1; k <= n; k ++ )
		for (int i = 1; i <= n; i + )
			for (int j = 1; j <= n; j ++ )
				d[i][j]= min(d[i][j],d[i][k] +d[k][j]);
}			
int main()
{
	scanf("%d%d%d",&n,&m,&Q);
	for (int i = 1; i <= n; i ++ )
		for (int j = 1; j <= n; j ++ )
			if (i == j) d[i][j]=0;else d[i][j] = INF;
	while (m -- )
	{
		int a, b, w;
		scanf("%d%d%d",&a,&b,&w);
		d[a][b] = min(d[a][b], w);
	}
	floyd( );
	while (Q -- )
	{
		int a, b;
		scanf("%d%d",&a,&b);
		if (d[a][b] >INF / 2) puts("impossible")
		else printf("%d", d[a][b]);
	}
	return 0;
}	


題解

Floyd是一個(gè)簡單的處理多源最短路徑的方法,時(shí)間復(fù)雜度為O(n3
Floyd模板就是

void floyd()
{
	for (int k = 1; k <= n; k ++ )
		for (int i = 1; i <= n; i + )
			for (int j = 1; j <= n; j ++ )
				d[i][j]= min(d[i][j],d[i][k] +d[k][j]);
}		

帶入模板即可解決問題,具體原理可以自行搜索博客,也很簡單,在這里就不想詳述了。文章來源地址http://www.zghlxwxcb.cn/news/detail-534254.html

到了這里,關(guān)于Acwing.854 Floyd求最短路 (Floyd算法)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • C語言算法與數(shù)據(jù)結(jié)構(gòu),旅游景區(qū)地圖求最短路徑

    C語言算法與數(shù)據(jù)結(jié)構(gòu),旅游景區(qū)地圖求最短路徑

    本次作業(yè)要求完成一個(gè)編程項(xiàng)目。請(qǐng)?zhí)摌?gòu)一張旅游景區(qū)地圖,景區(qū)地圖包括 景點(diǎn)(結(jié)點(diǎn))和道路(邊):地圖上用字母標(biāo)注出一些點(diǎn),表示景點(diǎn)(比如,以點(diǎn) A、B、C、D、E、F等(至少6個(gè)點(diǎn))多個(gè)表示,其中的 兩個(gè)字母 A 和 B 分別表示景區(qū)的入口和出口 );點(diǎn)與點(diǎn)之間的連

    2024年02月04日
    瀏覽(19)
  • 數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)記錄——圖-最短路徑問題(無權(quán)圖單源最短路徑算法、有權(quán)圖單源最短路徑算法、多源最短路徑算法、Dijkstra(迪杰斯特拉)算法、Floyd算法)

    數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)記錄——圖-最短路徑問題(無權(quán)圖單源最短路徑算法、有權(quán)圖單源最短路徑算法、多源最短路徑算法、Dijkstra(迪杰斯特拉)算法、Floyd算法)

    目錄 問題分類? 無權(quán)圖單源最短路徑算法 思路 偽代碼 時(shí)間復(fù)雜度 代碼實(shí)現(xiàn)(C語言) 有權(quán)圖單源最短路徑算法 Dijkstra(迪杰斯特拉)算法 偽代碼? 時(shí)間復(fù)雜度? 代碼實(shí)現(xiàn)(C語言) 多源最短路徑算法 兩種方法 Floyd算法 代碼實(shí)現(xiàn)(C語言) 最短路徑問題的抽象 在網(wǎng)絡(luò)中,求

    2024年02月08日
    瀏覽(22)
  • 【算法】求最短路徑算法

    【算法】求最短路徑算法

    從某頂點(diǎn)出發(fā),沿圖的邊到達(dá)另一頂點(diǎn)所經(jīng)過的路徑中,各邊上權(quán)值之和最小的一條路徑叫做最短路徑。 解決最短路徑的問題有以下算法:Dijkstra 算法,Bellman-Ford 算法,F(xiàn)loyd 算法和 SPFA 算法等。 迪杰斯特拉算法(Dijkstra 算法)是典型最短路徑算法,用于計(jì)算一個(gè)節(jié)點(diǎn)到其它

    2024年02月02日
    瀏覽(18)
  • 圖算法——求最短路徑(Dijkstra算法)

    圖算法——求最短路徑(Dijkstra算法)

    ? ? ? ? 目錄 一、什么是最短路徑 二、迪杰斯特拉(Dijkstra)算法 ?三、應(yīng)用Dijkstra算法 (1) Dijkstra算法函數(shù)分析 ????????求圖的最短路徑在實(shí)際生活中有許多應(yīng)用,比如說在你在一個(gè)景區(qū)的某個(gè)景點(diǎn),參觀完后,要怎么走最少的路程到你想?yún)⒂^的下個(gè)景點(diǎn),這就利用到

    2023年04月15日
    瀏覽(20)
  • Dijkstra算法求最短路

    Dijkstra算法求最短路

    Dijkstra算法的流程如下: 1.初始化dist[1] = 0,其余節(jié)點(diǎn)的dist值為無窮大。 2.找出一個(gè)未被標(biāo)記的、dist[x]最小的節(jié)點(diǎn)x,然后標(biāo)記節(jié)點(diǎn)x。 3.掃描節(jié)點(diǎn)x的所有出邊(x,y,z),若dist[y] dist[x] + z,則使用dist[x] + z更新dist[y]。 4.重復(fù)上述2~3兩個(gè)步驟,直到所有的節(jié)點(diǎn)都被標(biāo)記。 Dijk

    2024年02月06日
    瀏覽(20)
  • 迪杰斯特拉算法(求最短路徑)

    迪杰斯特拉算法(求最短路徑)

    迪杰斯特拉算法用于查找圖中某個(gè)頂點(diǎn)到其它所有頂點(diǎn)的最短路徑,該算法既適用于無向加權(quán)圖,也適用于有向加權(quán)圖。 注意,使用迪杰斯特拉算法查找最短路徑時(shí),必須保證圖中所有邊的權(quán)值為非負(fù)數(shù),否則查找過程很容易出錯(cuò)。 迪杰斯特拉算法的實(shí)現(xiàn)思路 圖 1 是一個(gè)無

    2024年02月02日
    瀏覽(21)
  • 弗洛伊德算法(求最短路徑)

    弗洛伊德算法(求最短路徑)

    在一個(gè)加權(quán)圖中,如果想找到各個(gè)頂點(diǎn)之間的最短路徑,可以考慮使用弗洛伊德算法。 弗洛伊德算法既適用于無向加權(quán)圖,也適用于有向加權(quán)圖。使用弗洛伊德算法查找最短路徑時(shí),只允許環(huán)路的權(quán)值為負(fù)數(shù),其它路徑的權(quán)值必須為非負(fù)數(shù),否則算法執(zhí)行過程會(huì)出錯(cuò)。 弗洛

    2024年02月06日
    瀏覽(21)
  • 數(shù)據(jù)結(jié)構(gòu)第13周 :( 迪杰斯特拉最短路徑 + 弗洛伊德求最短路徑 + 歐拉回路 + Invitation Cards)

    【問題描述】 在帶權(quán)有向圖G中,給定一個(gè)源點(diǎn)v,求從v到G中的其余各頂點(diǎn)的最短路徑問題,叫做單源點(diǎn)的最短路徑問題。 在常用的單源點(diǎn)最短路徑算法中,迪杰斯特拉算法是最為常用的一種,是一種按照路徑長度遞增的次序產(chǎn)生最短路徑的算法。 在本題中,讀入一個(gè)有向圖

    2024年02月13日
    瀏覽(26)
  • 求最短路徑的三種算法

    目錄 一.單源最短路 1.dijkstra算法及實(shí)現(xiàn) 2.spfa算法及實(shí)現(xiàn) (1)spafa負(fù)環(huán)判斷及實(shí)現(xiàn) 二.多源最短路 1.floyd算法及實(shí)現(xiàn) 一.單源最短路 1.dijkstra算法及實(shí)現(xiàn) 求源點(diǎn)到圖中其余各頂點(diǎn)的最短路徑 dfs效率慢,解決規(guī)模小,bfs只能邊權(quán)為1的圖 Dijkstra算法——迪杰斯塔拉算法(非負(fù)全圖)

    2024年02月14日
    瀏覽(21)
  • 二、搜索與圖論6:Dijkstra 模板題+算法模板(Dijkstra求最短路 I, Dijkstra求最短路 II,1003 Emergency)

    二、搜索與圖論6:Dijkstra 模板題+算法模板(Dijkstra求最短路 I, Dijkstra求最短路 II,1003 Emergency)

    樸素dijkstra算法 對(duì)應(yīng)模板題:Dijkstra求最短路 I 時(shí)間復(fù)雜是 O(n^2+m):n 表示點(diǎn)數(shù),m 表示邊數(shù) 堆優(yōu)化版dijkstra 對(duì)應(yīng)模板題:Dijkstra求最短路 II 時(shí)間復(fù)雜度 O(mlogn):n 表示點(diǎn)數(shù),m 表示邊數(shù) 樹是一種特殊的圖 ,與圖的存儲(chǔ)方式相同。 對(duì)于無向圖中的邊ab,存儲(chǔ)兩條有向邊a-b, b-a。

    2024年02月14日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包