CodeVS1243 網路提速 最短路分層思想

2021-08-09 01:22:14 字數 1561 閱讀 7857

題目描述 description

某學校的校園網由n(1<=n<=50)臺計算機組成,計算機之間由網線相連,如圖5。其中頂點代表計算機,邊代表網線。正如你所見,不同網線的傳輸能力不盡相同,例如計算機1與計算機2之間傳輸資訊需要34秒,而計算機2與計算機3之間的傳輸資訊只要10秒。計算機1與計算機5之間傳輸資訊需要44秒,途徑為機1到機3到機5。

現學校購買了m(1<=m<=10)臺加速裝置,每台裝置可作用於一條網線,使網線上傳輸資訊用時減半。多台裝置可用於同一條網線,其效果疊加,即用兩台裝置,用時為原來的1/4,用三颱裝置,用時為原來的1/8。如何合理使用這些裝置,使計算機1到計算機n傳輸用時最少,這個問題急需解決。校方請你程式設計解決這個問題。例如圖5,若m=2,則將兩台裝置分別用於1-3,3-5的線路,傳輸用時可減少為22秒,這是最佳解。

輸入描述 input description

第一行先輸入n,m。以下n行,每行有n個實數。第i行第j列的數為計算機i與計算機j之間網線的傳輸用時,0表示它們之間沒有網線連線。注意輸入資料中,從計算機1到計算機n至少有一條網路。

輸出描述 output description

輸出計算機1與計算機n之間傳輸資訊的最短時間。(保留兩位小數)

樣例輸入 sample input

5 2

0 34 24 0 0

34 0 10 12 0

24 10 0 16 20

0 12 16 0 30

0 0 20 30 0

樣例輸出 sample output

22.00

解題報告

這道題是在求最短路的過程中,利用類似dis[v] < dis[u]+ed[i].w的性質來更新f[v][k]陣列。 感覺有一些dp的味道。

此外還有一些細節問題,比如說map陣列中對0的處理。

#include

#include

#include

#include

using

namespace

std;

const

int n=50,m=10;

const

double inf=1e18;

int n,m;

double

map[n+5][n+5][m+5],f[n+5][m+5];//map[i][j][k]的含義:在i到j的路徑上裝k個加速器的網速

//f[u][k]的含義:前u個點公用k個加速器的答案

bool flag[n+5];

void spfa()}}

}}int main()

for(int i=2;i<=n;i++)

for(int j=0;j<=m;j++)

f[i][j]=inf;

spfa();

printf("%.2lf",f[n][m]);

return

0;}

Codevs 1243 網路提速

時間限制 1 s 空間限制 128000 kb 題目等級 gold description 某學校的校園網由n 1 n 50 臺計算機組成,計算機之間由網線相連,如圖5。其中頂點代表計算機,邊代表網線。正如你所見,不同網線的傳輸能力不盡相同,例如計算機1與計算機2之間傳輸資訊需要34秒,而計算機2與...

CODEVS1490 CTSC2008 網路管理

題目描述 description m公司是乙個非常龐大的跨國公司,在許多國家都設有它的下屬分支機構或部門。為了讓分布在世界各地的n個部門之間 協同工作,公司搭建了乙個連線整個公司的通訊網路。該網路的結構由n個路由器和n 1條高速光纜組成。每個部門都有乙個專屬的路由器,部門區域網內的所有 機器都聯向這...

草地排水 codevs1993 網路流

農夫約翰知道每一條排水溝每分鐘可以流過的水量,和排水系統的準確布局 起點為水潭而終點為小溪的一張網 需要注意的是,有些時候從一處到另一處不只有一條排水溝。根據這些資訊,計算從水潭排水到小溪的最大流量。對於給出的每條排水溝,雨水只能沿著乙個方向流動,注意可能會出現雨水環形流動的情形。第1行 兩個用空格...