Uva 11280 飛到弗雷德里頓

2022-04-06 19:57:53 字數 1328 閱讀 9059

·你可以盡情地坐飛機,但停留次數遭到限制。

·英文題,述大意:

給出一張有向圖,起點是輸入的第乙個城市,終點是輸入的最後乙個城市。給出q個詢問,每個詢問含乙個t,表示中途最多經過個城市的情況下,起點到終點的最短路徑長度(即費用)。

·分析:

經過的點的次數被限制,我們不禁想到使用二元組:(u,t)來表示從起點到節點u最多途徑t個點(包括起點)時的最短路徑長度。

·bellman-ford演算法的精髓:列舉每條邊,對該邊的兩點進行路徑更新。不要學習了spfa就忘記了它是**來的。在這個演算法中,為了保證找到最短路,需要反覆更新n-1次。如果我們只更新t次呢(即1~n的迴圈進行t次)?那麼可以使得乙個點的從起點到它最優路徑只經過t個點,這與我們的需要完美契合。

·我們只需要列舉從小到大停留次數t,然後不斷地1~n迴圈,每次完成後記錄當前限制下的最短路,那麼這樣的離線處理就可以完美解決詢問了。

·**來了。

1 #include2

#define go(i,a,b) for(int i=a;i<=b;i++)

3#define inf 1000000000

4using

namespace std;string a,b;maps;

5int _,t,n,m,q,u[1002],v[1002],w[1002],d[102][102];6

int main()

12 scanf("

%d",&q);if(_-t-1)puts("");printf("

scenario #%d\n

",_-t);

1314

while(q--)

17 }return

0;}//

paul_guderian

·另外,使用dijkstra演算法是否可以呢?可以。同樣是用f[u][t]表示到達u點已經途徑t個城市。這道題的資料,spfa、bellman-ford更加適合。大公尺餅**又不小心達到了排名第一。

那些卑微卻炫目的歡愉,只是往昔壯景的悲憫。---汪峰《一瞬間》

UVA 木塊問題 101

uva 木塊問題 101,好開森好開森。雖然花了很長時間,不過能一次就ac也是蠻開心的,用c 寫效率就是不錯 疊木塊其實是乙個二維空間,每個木塊都有縱橫座標 include include includeusing namespace std block用於記錄木塊所在位置,x是位於哪一疊木塊,y是...

UVA 非常可樂

include include include include include using namespace std struct node int vis 205 205 注意vis陣列用於 int s,n,m int cup left 3 記錄三個杯子中每個杯子的剩餘狀態 int bfs fo...

UVa百題總結

總算刷夠 演算法競賽入門經典 100題了,就像教主所說,有了練acm的誠意,受自身水平和眼界所限,這總結難免會有一些個人色彩和不正確的地方,大牛勿噴。另外我的文筆可能極其拙劣,將就著看吧。按照教主的進度安排,最理想的情況是寒假學完前八章,下學期開始學動態規劃 數學和圖論的基礎,為暑假集訓打下基礎。暑...