1. 程式人生 > >七龍珠 Floyd-Warshall 弗洛伊德演算法

七龍珠 Floyd-Warshall 弗洛伊德演算法

#include <iostream>
#include <math.h>
#include <algorithm>
#include <string.h>
#include <stdio.h>
using namespace std;
int inf=99999999;
int main()
{
    int t,n,m;
    int a[310][310];
    while(~scanf("%d",&t)){
    while(t--){
        scanf("%d%d",&n,&m);
        for(int i=1;i<=n;i++){       //初始化
            for(int j=1;j<=n;j++){
                if(i==j){a[i][j]=0;}
                else a[i][j]=inf;
            }
        }
        for(int i=1;i<=n;i++){       // 賦值
            for(int j=1;j<=n;j++){
                scanf("%d",&a[i][j]);
            }
        }
        for(int k=1;k<=n;k++){             //floyed warshall
            for(int i=1;i<=n;i++){
                for(int j=1;j<=n;j++){
                    if(a[i][j]>a[i][k]+a[k][j]){
                        a[i][j]=a[i][k]+a[k][j];
                    }
                }
            }
        }
        while(m--){
            int one,two,three,four,five,six;
            scanf("%d%d%d%d%d%d",&one,&two,&three,&four,&five,&six);
            printf("%d\n",a[one][two]+a[two][three]+a[three][four]+a[four][five]+a[five][six]);
        }
    }
    }
    return 0;
}

相關推薦

Floyd-Warshall 演算法

#include <iostream> #include <math.h> #include <algorithm> #include <string.h&g

Floyd-Warshall演算法

Floyd演算法是用來找出每對頂點之間的最短距離,即適用於多源最短路經,它對圖的要求是,既可以是無向圖也可以是有向圖,邊權可以為負,但是不能存在負環(可根據最小環的正負來判定). 具體可閱讀以下博文: 問題集錦:

最短路徑-Floyd()演算法

最短路徑-Floyd(弗洛伊德)演算法 簡介: 相較Dijkstra,Floyd是一個完全窮舉圖中每個點到末尾點的最短路徑 演算法思想: 按慣例說兩個工具 Path[MAX_SIZE][MAX_SIZE]:儲存所有的最短路徑(指向

結點對最短路徑Floyd演算法解析

        暑假,小哼準備去一些城市旅遊。有些城市之間有公路,有些城市之間則沒有,如下圖。為了節省經費以及方便計劃旅程,小哼希望在出發之前知道任意兩個城市之前的最短路程。         上圖中有4個城市8條公路,公路上的數字表示這條公路的長短。請注意這些公

最短路徑 單源最短路徑Dijkstra(迪傑斯特拉)演算法 Floyd演算法

兩個演算法的主要思想都是鬆弛,就是兩點間的距離通過第三點來變短 比如   1->3=10     1->2=2   2->3=5    這樣你就可以通過2號點把1,3兩點的距離縮短為7 Dijkstra演算法被稱為單源最短路,意思就是隻能計算某個點到

Warshall演算法

    簡介:Floyd演算法又稱為插點法,是一種利用動態規劃的思想尋找給定的加權圖中多源點之間最短路徑的演算法,與Dijkstra演算法類似。該演算法名稱以創始人之一、1978年圖靈獎獲得者、斯坦福大學計算機科學系教授羅伯特·弗洛伊德命名。eg:暑假,小哼準備去一些城市旅遊

資料結構之(圖最短路徑之)Floyd演算法

1)弗洛伊德演算法是求圖最短路徑的另外一種演算法,其適用於求圖中任意兩節點之間最短路徑; 2)其基本思想也是動態規劃,時間複雜度是O(N^3),N代表節點個數; 3)動態規劃的實現步驟是:a)找出問題的最優子結構;b)根據最優子結構求出遞迴解;c)以自下而上的方式求出最優解

Floyd algorithm!!!!!(萬惡的演算法

        曾經有位滑稽的博主說過:搜尋就是優雅的暴力。今天他又要說,DP就是優雅地搜尋。         不是每一個弗洛伊德都寫演算法,也不是寫演算法的都叫弗洛伊德,還有一位人家寫性學三論去了。         這位弗洛伊德來歷不一般,斯坦福大學的教授,1978年的

Floyd()演算法 詳解+模板

弗洛伊德演算法介紹 和Dijkstra演算法一樣,弗洛伊德(Floyd)演算法也是一種用於尋找給定的加權圖中頂點間最短路徑的演算法。該演算法名稱以創始人之一、1978年圖靈獎獲得者、斯坦福大學計算機科學系教授羅伯特·弗洛伊德命名。 基本思想 通過Floyd計算

最短路之Floyd演算法

弗洛伊德演算法的作用是可以求任意兩點的最短路問題,時間複雜度為O(n^3)。 先舉個栗子: 例如求1->3的最短路徑,首先找出所有可以從1->3的路徑。 1->2+2->

最短路徑演算法Floyd()演算法分析與實現(Python)

December 19, 2015 10:56 PM Floyd演算法是解決任意兩點間的最短路徑的一種演算法,可以正確處理帶權有向圖或負權的最短路徑問題 解決此問題有兩種方法: 其一是分別以圖中每個頂點為源點共呼叫n次演算法; 其二是採用Floyd演算法

演算法筆記---最短路路徑之Floyd()演算法

                                                                     最短路路徑之Floyd(弗洛伊德)演算法 Floyd-Wars

總結一下最短路徑的演算法Floyd

看了好多大牛部落格,我把弗洛伊德演算法在這裡總結一下。 弗洛伊德演算法的介紹,先參考百度百科:Floyd演算法 再來幾篇可以參考的博文:http://www.wutianqi.com/?p=1903 http://www.cnblogs.com/biyeymyhjob/ar

最短路徑演算法(3)—Floyd()演算法

Floyd-Warshall演算法,簡稱Floyd演算法,用於求解任意兩點間的最短距離,時間複雜度為O(n^3)。 使用條件&範圍 通常可以在任何圖中使用,包括有向圖、帶負權邊的圖。 Floyd-Warshall 演算法用來找出每對點之間的

最短路徑演算法Floyd()演算法

Floyd演算法(解決任意兩點間的最短路徑,可以正確處理有向圖或負權值的最短路徑問題): 時間複雜度O(N3),空間複雜度O(N2); 演算法思想: Floyd演算法是一個經典的動態規劃演算法;首先我

floyd()演算法,用於計算最短路徑

程式小白,希望和大家多交流,共同學習 //弗洛伊德(floyd)演算法,用於計算最短路徑 #include<iostream> #include<string> #include<iostream> #include<

最短路徑之演算法(Floyd)

http://blog.csdn.net/ganze_12345/article/details/12164389自己寫的對於這篇文章的改進。怎麼說呢,之前我還認為是因為題目的問題所以要用這種笨方法,可是現在覺得完全是因為自己思維太狹隘了和基本知識的掌握不牢所致,現在通過網

最短路之——演算法floyd

來源: https://blog.csdn.net/riba2534/article/details/54562440我們要做的是求出從某一點到達任意一點的最短距離,我們先用鄰接矩陣來建圖,map[i][j]表示從i點到j點的距離,把自己到自己設為0,把自己到不了的邊初始化為

程式設計基礎26 演算法

題目描述 在帶權有向圖G中,求G中的任意一對頂點間的最短路徑問題,也是十分常見的一種問題。 解決這個問題的一個方法是執行n次迪傑斯特拉演算法,這樣就可以求出每一對頂點間的最短路徑,執行的時間複雜度為O(n3)。 而另一種演算法是由弗洛伊德提出的,時間複雜度同樣是O(n3),但演算法的形式

拓撲排序以及迪傑斯特拉演算法演算法的一些例子(天勤資料結構)

拓撲排序核心演算法     在一個有向圖中找到一個拓撲排序的過程如下:     1)從一個有向圖中選擇一個沒有前驅(入度為0)的頂點輸出;     2)刪除1)中的頂點,並刪除從該頂點出發的全部邊;