[codevs]1077 多源最短路 --- Floyd

題目描述 Description
已知n個(gè)點(diǎn)(n<=100),給你n*n的方陣刻撒,a[i,j]表示從第i個(gè)點(diǎn)到第j個(gè)點(diǎn)的直接距離。
現(xiàn)在有Q個(gè)詢問(wèn)耿导,每個(gè)詢問(wèn)兩個(gè)正整數(shù)声怔,a和b,讓你求a到b之間的最短路程舱呻。滿足a[i,j]=a[j,i];
輸入描述 Input Description
第一行一個(gè)正整數(shù)n醋火,接下來(lái)n行每行n個(gè)正整數(shù),滿足a[i,i]=0,再一行一個(gè)Q箱吕,接下來(lái)Q行芥驳,每行兩個(gè)正整數(shù)a和b。
輸出描述 Output Description
一共Q行茬高,每行一個(gè)整數(shù)兆旬。
樣例輸入 Sample Input
3
0 1 1
1 0 3
1 3 0
1
2 3
樣例輸出 Sample Output
2
1.Floyd算法的簡(jiǎn)介
Floyd算法又稱為插點(diǎn)法,是一種利用動(dòng)態(tài)規(guī)劃的思想尋找給定的加權(quán)圖中多源點(diǎn)之間最短路徑的算法怎栽,與Dijkstra算法類似丽猬。該算法名稱以創(chuàng)始人之一、1978年圖靈獎(jiǎng)獲得者熏瞄、斯坦福大學(xué)計(jì)算機(jī)科學(xué)系教授羅伯特·弗洛伊德命名脚祟。
2.Floyd的算法流程
按照題目要求,讀入數(shù)據(jù)到3x3的鄰接矩陣內(nèi)

Y0JP04PDS_WO6}M1P2%EY)H.png

在初始化圖結(jié)構(gòu)時(shí)强饮,需要注意的是由桌,當(dāng)i=j時(shí),應(yīng)當(dāng)設(shè)置為0邮丰,未特別說(shuō)明的數(shù)據(jù)應(yīng)設(shè)置為正無(wú)窮行您。
接著,進(jìn)入算法核心語(yǔ)句剪廉,先從無(wú)頂點(diǎn)開(kāi)始尋找最短的到達(dá)路徑
也就是0-0的直接路徑娃循。根據(jù)上圖,1-1路徑為0妈经。
當(dāng)前路徑大于計(jì)算的路徑淮野,更新最短路徑
floyd算法核心:對(duì)于每一對(duì)頂點(diǎn) i 和 j捧书,看看是否存在一個(gè)頂點(diǎn) k 使得從 i 到 k 再到 j 比已知的路徑更短吹泡。如果是更新它。
e[i][j] = e[i][k] + e[k][j];
...
當(dāng)經(jīng)過(guò)0-n個(gè)頂點(diǎn)的经瓷,更新i-j的最短路徑爆哑,我們得到如下圖

input.png

最后,根據(jù)題意要求舆吮,直接找到最短路徑位置輸出即可揭朝。
具體實(shí)現(xiàn)代碼如下

#include<iostream>
#include<cstdio>
using namespace std;
int e[1100][1100], k, i, j, n; int a, b;
int inf = 99999999;//用inf(infinity的縮寫)存儲(chǔ)一個(gè)我們認(rèn)為的正無(wú)窮值   
int main() {
    //n*n的矩陣 
    scanf("%d", &n);
    //初始化   
    for (i = 0; i < n; i++)
        for (j = 0; j < n; j++)
            if (i == j) e[i][j] = 0;
            else e[i][j] = inf;
            //讀入鄰接矩陣信息
            for (i = 0; i < n; i++)
            {
                for (int j = 0; j < n; j++)
                    cin >> e[i][j];
            }
            //Floyd-Warshall算法核心語(yǔ)句   (生成最小路徑圖)
            for (k = 0; k < n; k++)//附加頂點(diǎn)(1=n)遍歷队贱,判斷哪個(gè)路徑短
                for (i =0; i < n; i++)
                    for (j = 0; j < n; j++)
                        if (e[i][j]>e[i][k] + e[k][j])//選擇最小值
                            e[i][j] = e[i][k] + e[k][j];//更新較小節(jié)點(diǎn)
            //輸出最終的結(jié)果
            int q;
            cin >> q;
            int s, t;
            for (int i = 1; i <= q; i++) {
                cin >> s >> t;//輸入欲查找的最短路徑的位置
                printf("%d\n", e[s-1][t-1]);
            }
            return 0;
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市潭袱,隨后出現(xiàn)的幾起案子柱嫌,更是在濱河造成了極大的恐慌,老刑警劉巖屯换,帶你破解...
    沈念sama閱讀 216,692評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件编丘,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡彤悔,警方通過(guò)查閱死者的電腦和手機(jī)嘉抓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)晕窑,“玉大人抑片,你說(shuō)我怎么就攤上這事⊙畛啵” “怎么了敞斋?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,995評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)疾牲。 經(jīng)常有香客問(wèn)我渺尘,道長(zhǎng),這世上最難降的妖魔是什么说敏? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,223評(píng)論 1 292
  • 正文 為了忘掉前任鸥跟,我火速辦了婚禮,結(jié)果婚禮上盔沫,老公的妹妹穿的比我還像新娘医咨。我一直安慰自己,他們只是感情好架诞,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,245評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布拟淮。 她就那樣靜靜地躺著,像睡著了一般谴忧。 火紅的嫁衣襯著肌膚如雪很泊。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,208評(píng)論 1 299
  • 那天沾谓,我揣著相機(jī)與錄音委造,去河邊找鬼。 笑死均驶,一個(gè)胖子當(dāng)著我的面吹牛昏兆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播妇穴,決...
    沈念sama閱讀 40,091評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼爬虱,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼隶债!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起跑筝,我...
    開(kāi)封第一講書(shū)人閱讀 38,929評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤死讹,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后曲梗,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體回俐,經(jīng)...
    沈念sama閱讀 45,346評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,570評(píng)論 2 333
  • 正文 我和宋清朗相戀三年稀并,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了仅颇。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,739評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡碘举,死狀恐怖忘瓦,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情引颈,我是刑警寧澤耕皮,帶...
    沈念sama閱讀 35,437評(píng)論 5 344
  • 正文 年R本政府宣布,位于F島的核電站蝙场,受9級(jí)特大地震影響凌停,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜售滤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,037評(píng)論 3 326
  • 文/蒙蒙 一罚拟、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧完箩,春花似錦赐俗、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,677評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至秩彤,卻和暖如春叔扼,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背漫雷。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,833評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工瓜富, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人珊拼。 一個(gè)月前我還...
    沈念sama閱讀 47,760評(píng)論 2 369
  • 正文 我出身青樓食呻,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親澎现。 傳聞我的和親對(duì)象是個(gè)殘疾皇子仅胞,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,647評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 樹(shù)形動(dòng)態(tài)規(guī)劃,顧名思義就是樹(shù)+DP剑辫,先分別回顧一下基本內(nèi)容吧:動(dòng)態(tài)規(guī)劃:?jiǎn)栴}可以分解成若干相互聯(lián)系的階段干旧,在每一個(gè)...
    Mr_chong閱讀 1,484評(píng)論 0 2
  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問(wèn)題, 分享了一些自己做題目的經(jīng)驗(yàn)。 張土汪:刷leetcod...
    土汪閱讀 12,743評(píng)論 0 33
  • 從那以后妹蔽,我向往大學(xué)生活椎眯; 從那以后,我知道了西北還有座小江南胳岂; 從那以后编整,我才發(fā)現(xiàn),校園里的女生多是事實(shí)乳丰,但空氣...
    胡子崔閱讀 774評(píng)論 0 50
  • 對(duì)這里的記憶是關(guān)于 一個(gè)女子和一本經(jīng)書(shū) 和一匹布帛 那個(gè)沉睡在大漢盛世的女子 千年的不朽 因情亦或因愛(ài) 唯此長(zhǎng)久永...
    寧久微初心不改閱讀 332評(píng)論 0 0
  • 今天給大家講一則笑話掌测。 前幾天在街上,我偶遇一位雖然一直都有電話號(hào)碼产园,但從未撥通過(guò)的同學(xué)汞斧。然后不免就多聊了幾句,臨...
    琴瑟沉香閱讀 285評(píng)論 0 1