刷題總結 shortest(ssoi)

2022-05-23 14:00:10 字數 1320 閱讀 2880

source:noip2015-shy-3

給定一張 n 個點的有向帶權完全圖,和乙個陣列 a ,請按順序刪除陣列中的點,請求出在刪除點 a[i] 以前,所有未刪除點對之間的最短路的值的和。

第一行乙個整數 n ,表示點數;

接下來 n 行,每行 n 個數構成鄰接矩陣,描述每條邊的權值,保證 i 號點到 i 號點的權值為 0 ;

最後一行 n 個小於等於 n 的不同的數,描述陣列 a。

輸出 1 行 n 個數,表示答案。

輸入  [複製]

0 3 1 1 

6 0 400 1 

2 4 0 1 

1 1 1 0 

4 1 2 3

輸出

17 23 404 0

【資料範圍】

對 30% 的輸入資料 :1≤n≤10 ;

對 100% 的輸入資料 :1≤n≤500;0<權值≤100000 。

先轉變成倒插入數字的問題,再用floyd算最短距離:n方算之前的插入的點到當前點的最短距離,和當前點到之前插入的點的最短距離,最後再用n方算經過當前點的路徑的最短距離

#include#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

const

int n=505

;long

long

dis[n][n];

intn,num[n],ans[n];

intmain()

for(int k=1;k<=i-1;k++)

for(int j=1;j<=i-1;j++)

for(int k=1;k<=i-1;k++)

for(int j=1;j<=i-1;j++)

dis[num[k]][num[j]]=min(dis[num[k]][num[j]],dis[num[k]][num[i]]+dis[num[i]][num[j]]);

for(int k=1;k<=i;k++)

for(int j=1;j<=i;j++)

ans[i]+=dis[num[k]][num[j]];

} for(int i=n;i>=1;i--)

cout

<"";

return0;

}

筆試刷題總結

今天刷了一些筆試題,以下是刷完筆試題後看到的相關知識點的解析,做個小結。1 多型主要以兩種形式,靜態多型和動態多型,靜態多型主要實現了函式過載和運算子過載。動態多型主要實現了虛函式。虛函式是動態聯編,程式在執行的過程中確定呼叫哪乙個函式。2 int s 8 定義乙個指標陣列,該陣列中每個元素是乙個指...

Java刷題總結

public class hasstatic a.程式通過編譯,輸出結果為 x 102 b.程式通過編譯,輸出結果為 x 103 c.10行不能通過編譯.因為x星私有靜態變數 d.5行不能通過編譯.因為引用了私有靜態變數 解析 同乙個類內,private變數可以訪問,所以cd錯。由於x是static...

LeetCode刷題總結

123 4567 891011 12 元素交換 swap a 1 a 3 sort排序 sort a.begin a.end 陣列顛倒 reverse a.begin a.end 陣列元素置為0 memset a,0,a.size 陣列取值 a.push back 定義二維陣列 vector vec...