最短路徑(資訊學奧賽一本通 T1378)

2021-10-19 09:19:13 字數 1753 閱讀 5521

題目描述

給出乙個有向圖 g = (v, e),和乙個源點 v0 ∈ v,請寫乙個程式輸出 v0 和圖 g 中其它頂點的最短路徑。

只要所有的有向環權值和都是正的,我們就允許圖的邊有負值,頂點的標號從 1 到 n(n 為圖 g 的頂點數)。

輸入格式

第 1 行:乙個正數 n,表示圖 g 的頂點總數。

第 2 行:乙個整數,表示源點 v0(v0 ∈ v,v0 可以是圖 g 中任意乙個頂點)。

第 3 至第 n + 2 行,用乙個鄰接矩陣 w 給出了這個圖。

輸出格式

共包含 n - 1 行,按照頂點編號從小到大的順序,每行輸出源點 v0 到乙個頂點的最短距離。

每行的具體格式參照樣例。

輸入樣例

510

2--10

-03-

7--0

4---

-05-

-6-0

輸出樣例(1 -> 2) = 2

(1 -> 3) = 5

(1 -> 4) = 9

(1 -> 5) = 9

提示

題解

floyd:

scanf 的返回值為成功讀入的變數個數,以scanf("%d%d", &a, &b)為例;

當輸入1 1時返回2

當輸入1 c時返回1

當輸入c c時返回0

#include

#include

#include

using

namespace std;

const

int n =

100, inf =

0x3f3f3f3f

;int n, s, x;

int g[n]

[n];

void

floyd()

intmain()

錯解:為啥這樣讀入只過了三個資料 ???

#include

#include

#include

using

namespace std;

const

int n =

100, inf =

0x3f3f3f3f

;int n, s;

int g[n]

[n];

void

floyd()

intmain()

}floyd()

;for

(int i =

1; i <= n; i ++)if

(i != s)

printf

("(%d -> %d) = %d\n"

, s, i, g[s]

[i])

;return0;

}

最短路(資訊學奧賽一本通 T1382)

題目描述 給定 m 條邊,n 個點的帶權無向圖,求 1到 n 的最短路。注意圖中可能有重邊和自環,資料保證 1 到 n 有路徑相連。輸入格式 第一行 n,m 接下來 m 行 3 個正整數 ai,bi,ci 表示 ai,bi 之間有一條長度為 ci 的路 輸出格式 乙個整數,表示 1 到 n 的最短距...

計算(資訊學奧賽一本通 T1356)

題目描述 小明在你的幫助下,破密了ferrari設的密碼門,正要往前走,突然又出現了乙個密碼門,門上有乙個算式,其中只有 0 9,求出的值就是密碼。小明數學學得不好,還需你幫他的忙。用整數除法 輸入格式 共 1 行,為乙個算式。輸出格式 共 1 行,就是密碼。輸入樣例 1 3 2 7 2 69 2 ...

均值(資訊學奧賽一本通 T1060)

題目描述 給出一組樣本資料,包含n個浮點數,計算其均值,精確到小數點後4位。輸入 輸入有兩行,第一行包含乙個整數n n小於100 代表樣本容量 第二行包含n個絕對值不超過1000的浮點數,代表各個樣本資料。輸出 輸出一行,包含乙個浮點數,表示均值,精確到小數點後4位。輸入樣例 21.0 3.0 輸出...