聖誕節又要到了!小薩希望和自己心儀的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。小薩打算和...