題目描述
跟所有人一樣,農夫約翰以著寧教我負天下牛,休叫天下牛負我的偉大精神,日日夜夜苦思生財之道。為了發財,他設定了一系列的規章制度,使得任何乙隻奶牛在農場中的道路行走,都要向農夫約翰上交過路費。
農場中由n(1 <= n <= 250)片草地(標號為1到n),並且有m(1 <= m <= 10000)條雙向道路連線草地a_j和b_j(1 <= a_j <= n; 1 <= b_j <= n)。奶牛們從任意一片草地出發可以抵達任意一片的草地。fj已經在連線a_j和b_j的雙向道路上設定乙個過路費l_j(1 <= l_j <= 100,000)。
可能有多條道路連線相同的兩片草地,但是不存在一條道路連線一片草地和這片草地本身。最值得慶幸的是,奶牛從任意一片草地出發,經過一系列的路徑,總是可以抵達其它的任意一片草地。
除了貪得無厭,我們都不知道該說什麼好。fj竟然在每片草地上面也設定了乙個過路費c_i(1 <= c_i <= 100000)。從一片草地到另外一片草地的費用,是經過的所有道路的過路費之和,加上經過的所有的草地(包括起點和終點)的過路費的最大值。
任勞任怨的牛們希望去調查一下她們應該選擇那一條路徑。她們要你寫乙個程式,接受k(1<= k <= 10,000)個問題並且輸出每個詢問對應的最小花費。第i個問題包含兩個數字s_i和t_i(1 <= s_i <= n; 1 <= t_i <= n; s_i != t_i),表示起點和終點的草地。
考慮下面這個包含5片草地的樣例影象:
從草地1到草地3的道路的「邊過路費」為3,草地2的「點過路費」為5。
要從草地1走到草地4,可以從草地1走到草地3再走到草地5最後抵達草地4。如果這麼走的話,需要的「邊過路費」為2+1+1=4,需要的點過路費為4(草地5的點過路費最大),所以總的花費為4+4=8。
而從草地2到草地3的最佳路徑是從草地2出發,抵達草地5,最後到達草地3。這麼走的話,邊過路費為3+1=4,點過路費為5,總花費為4+5=9。
輸入第1行: 三個空格隔開的整數: n, m和k
第2到第n+1行: 第i+1行包含乙個單獨的整數: c_i
第n+2到第n+m+1行: 第j+n+1行包含3個由空格隔開的整數: a_j, b_j和l_j
第n+m+2倒第n+m+k+1行: 第i+n+m+1行表示第i個問題,包含兩個由空格隔開的整數s_i和t_i
輸出第1到第k行: 第i行包含乙個單獨的整數,表示從s_i到t_i的最小花費。
樣例輸入
5 7 225
3341 2 3
1 3 2
2 5 3
5 3 1
5 4 1
2 4 3
3 4 4
1 42 3
題目大意:給出你n個點的點權和m條邊的花費,叫你求任意兩點之間的距離。
注意:這裡的距離是指邊權的最短路加上這一條路徑上的最大點權。
題目思路:
一看題目我們便可以知道這是一道多源路徑的最短路,於是我們採用floyed。
唯一要注意的是題目規定從乙個點到另乙個點的路徑不只一種,所以我們在
記錄兩個點的路徑距離時,記得要打擂台(min).
點權怎麼處理?
其實我們也可以像記錄邊權一樣來記錄,不過要取兩點之間的最大點權。
然後我們將floyed改一下就行了,每次要將邊權和點權作比較,就行了。
#include
#include
#include
#include
using
namespace std;
const
int max=
260;
int a[max]
[max]
;int d[max]
[max]
;int c[max]
;int n,m,k;
void
floyed()
}int
main()
}floyed()
,floyed()
,floyed()
;for
(int i=
1;i<=k;i++
)return0;
}
P1595 信封問題
題目描述 某人寫了n封信和n個信封,如果所有的信都裝錯了信封。求所有信都裝錯信封共有多少種不同情況。輸入格式 乙個信封數n n 20 輸出格式 乙個整數,代表有多少種情況。輸入輸出樣例 輸入 1 輸出 1 輸入 2 輸出 2 include include include include inclu...
GDKOI模擬2016 01 24總結
這場比賽爆零了。原因有很多。現就巨集觀而言,進入初三以後,我在資訊學方面遇到很大的瓶頸和壓力,加之初三學習的重負,oi方面一直有些萎靡不振。儘管退出了培優班,但是我發現由於沒有足夠完善的時間安排,我還是不能保證每天都去機房,很多題都沒時間改,更別提去做其它題目了。學習效率也不是很高,當然這些會形成惡...
GDKOI前模擬總結
連續做了4天的模擬賽,比賽之前打擊一下自信心是很好的事情。一開始看題發現第一題都不會感覺生活沒有希望。然後看第二題,好像做過很多遍了。第三題看了題面都覺得不可做,接著第四題,一直在化簡式子,沒有找到突破點。然後先打了第二題。接著第一題想錯了,以為匹配是對的,對拍的時候發現錯了。然後一直調後來發現整個...