hdu 1598 解題報告

2022-05-21 03:37:11 字數 808 閱讀 2567

說實話,一看到這個題,我第一反應就是dfs,本來想用dfs搜尋每乙個可行的路徑,然後記錄每乙個可行路徑上的最小速度差,然後再找出最小。可是寫著寫著就寫不下去了,因為記錄路徑實在不會。在網上看別人的方法,才恍然大悟,原來並查集是可以的。好乙個經典的演算法啊。

思路:就是先按速度由小到大排序,然後在合併不在乙個集合的元素,並檢查起始點是否在乙個集合裡,如果已經在乙個集合裡了,那麼用這時的速度減去開始合併進來的那個速度,則這個值就是所要求解的值,當然還有沒有找到的情況,這個很好考慮了就

1 #include

2 #include

3 #include

4 #include

5using

namespace std;

6#define inf 999999999

7#define n 250

8int a[n];

9int n,m;

10struct node

11 f[1010];

14int cmp(node c,node d)

15 18

int find(int x)

19 24

int main()

25 54

55 }

56if(j==m) break;

57 }

58if(k!=inf) cout<59

else cout<<"-1"

<60 }

61 }

62return

0;63 }

hdu1598 結題報告

題解 對於輸入的邊,我們首先按照速度從大到小排序,然後對於每一次詢問,st end 兩個城市,我們暴力列舉,for int i 0 i m i 然後我們從第 i 條邊開始 也就是說列舉刪除0 i條邊 到後面的第 m 條邊,我們用krustra,向並查集中插入每一條邊,看是不是能讓st 和 end 聯...

HDU1598 並查集 列舉

題意 給出乙個無向圖,每條邊代表兩點之間的同行速度,給出起點和終點,求出從起點到終點的路徑的最小速度差。若無法從起點到終點,則輸出 1。思路 儲存每條邊的資訊,按速度公升序排序。按速度從小到大列舉邊,然後依次往構建的樹中新增邊直到起點和終點在同一集合中。此時,最初新增的邊的速度與最後新增的邊的速度差...

HDU 1598 (列舉 並查集)

xx星有許多城市,城市之間通過一種奇怪的高速公路sars super air roam structure 超級空中漫遊結構 進行交流,每條sars都對行駛在上面的flycar限制了固定的speed,同時xx星人對 flycar的 舒適度 有特殊要求,即乘坐過程中最高速度與最低速度的差越小乘坐越舒服...