SSLOJ1624 小薩的煩惱

2021-10-13 19:02:49 字數 1855 閱讀 8224

聖誕節又要到了!小薩希望和自己心儀的mm一起出去度過乙個浪漫的的聖誕節。他進行了詳盡的準備,找到了n個很適合他們去約會的好地方,但無奈小薩和他的mm都是初三學校,晚上必須回學校上晚修,沒有足夠的時間讓他們走遍每乙個地方。迫於無奈,小薩選擇了乙個最合適的地方s。小薩打算和他的mm一起步行到那個地方,那樣他們就有很多時間來聊天玩樂,但是無奈時間有限,小薩決定坐公共汽車過去。然而,小薩發覺,自己的錢只夠買一張公共汽車車票了!小薩該怎麼辦呢?他找到了你……

【題目描述】

小薩將給出一張地圖,它可以看做乙個有n(n<=100)個結點的圖。這張地圖有n個公共汽車站,小薩只可以在這n個汽車站上公共汽車。有些車站之間存在一條雙向通路,無論是公共汽車還是小薩,都只能走這些通路。若兩個車站之間的距離為d,步行所需要的時間為2*d秒,坐公共汽車所需要的時間為d秒。小薩他們只有t秒的時間,他希望你求出他和他的mm出去約會後能否及時趕回來,若不能,則輸出「you are day dreaming!」,否則輸出他們所需要花費的最少時間。

注意:一張公共汽車車票可以使用兩次(只可以搭乘同一輛公共汽車),即可以認為小薩去約會地點的時間和回來的時間相等。

第一行有三個整數n、t、s

接下來是乙個n*n的鄰接矩陣。兩兩車站之間的距離不超過10^9。a[i,j]為0表示i和j車站不連通。

若小薩他們不能在限定時間內趕回學校,那麼輸出「you are day dreaming!」(不包括引號)

否則,輸出乙個整數,為他們所需要花費的最少時間。

4 5 4

0 1 1 1

1 0 1 1

1 1 0 1

1 1 1 0

該題為乙個分層圖,對於每一條邊,我們有步行和乘車2種情況,在用floyd進行最短路計算時,我們這樣做:

首先,有2個最短路陣列,第乙個,是只考慮步行的最短路,所以我們用乙個正常floyd。

第2個,是由第1個加上乘車這種情況,我們可以在任意時刻上車,也可以在任意時刻下車,只能從x->y,而且,x,y必須直達,所以,設f為第乙個陣列,f2為第2個陣列,我們的floyd是這樣的:

for

(int j=

1;j<=q;j++)if

(f[i]

[k]>f2[i]

[j]+f[j]

[k])

if(f[i]

[k]>f[i]

[j]+f2[j]

[k])}}

}

還有,注意他們是要回去的(夜不歸宿是會停宿的)

code:

#include

#include

#include

#include

using

namespace std;

int n,m,q;

long

long f[71]

[71],f2[71]

[71];

intmain()

}for

(int i=

1;i<=q;i++

) f[i]

[i]=f2[i]

[i]=0;

for(

int j=

1;j<=q;j++)if

(f[i]

[k]>f2[i]

[j]+f[j]

[k])

if(f[i]

[k]>f[i]

[j]+f2[j]

[k])}}

}if(f[1

][m]*2

>n)

else cout<[m]*

2

}

SSL1624小薩的煩惱

聖誕節又要到了!小薩希望和自己心儀的mm一起出去度過乙個浪漫的的聖誕節。他進行了詳盡的準備,找到了n個很適合他們去約會的好地方,但無奈小薩和他的mm都是初三學校,晚上必須回學校上晚修,沒有足夠的時間讓他們走遍每乙個地方。迫於無奈,小薩選擇了乙個最合適的地方s。小薩打算和他的mm一起步行到那個地方,那...

SSL ZYC 1624 小薩的煩惱

題目大意 小薩要從第乙個點走到地m個點,有些點可以走,而有些點卻不能走。每一條路所需要的時間為2 這條路的距離,其中可以選擇任意一條路 加速 到時間只要這條路的距離。請問能否在t的時間內回到第乙個點?思路 這道題就是乙個最短路徑問題,我們把從i到j不加速的最少時間記為f i j 1 加速的時間為f ...

小薩的煩惱

題目 description 聖誕節又要到了!小薩希望和自己心儀的mm一起出去度過乙個浪漫的的聖誕節。他進行了詳盡的準備,找到了n個很適合他們去約會的好地方,但無奈小薩和他的mm都是初三學校,晚上必須回學校上晚修,沒有足夠的時間讓他們走遍每乙個地方。迫於無奈,小薩選擇了乙個最合適的地方s。小薩打算和...