description
xx星有許多城市,城市之間通過一種奇怪的高速公路sars(super air roam structure---超級空中漫遊結構)進行交流,每條sars都對行駛在上面的flycar限制了固定的speed,同時xx星人對 flycar的「舒適度」有特殊要求,即乘坐過程中最高速度與最低速度的差越小乘坐越舒服 ,(理解為sars的限速要求,flycar必須瞬間提速/降速,痛苦呀 ),
但xx星人對時間卻沒那麼多要求。要你找出一條城市間的最舒適的路徑。(sars是雙向的)。
input
輸入包括多個測試例項,每個例項包括:
第一行有2個正整數n (1
output
每個尋路要求列印一行,僅輸出乙個非負整數表示最佳路線的舒適度最高速與最低速的差。如果起點和終點不能到達,那麼輸出-1。
sample input
4 41 2 2
2 3 4
1 4 1
3 4 2
21 3
1 2
sample output
10
貪心的kruskal最小生成樹演算法思路, 把路徑按照從小到大排序。為了讓start和end有路徑,只需要按照kruskal演算法從"最小路徑"開始構造生成樹,一旦發現start和end有連線了,那麼就表示已經構成滿足條件的那個路徑。由於路徑已經排序好,那麼此時所列舉「起點」和「滿足條件之點」之差便是最大速度與最小速度之差。
#include#include#includeusing namespace std;
#define maxn 210
#define inf 0x3f3f3f3f
int fa[maxn],ra[maxn];
int n,m,q;
struct node
}int main()
{ while(~scanf("%d%d",&n,&m))
{for(int i=0;i
貪心 最小生成樹Kruskal演算法
構造最小生成樹還有一種演算法,kurskal演算法 設g v,e 是無向連通帶權圖,v 設最小生成樹t v,te 該樹的初始狀態為只有n個頂點而無邊的非連通圖t v,kruskal演算法將這n個頂點看成是n個孤立的連通分支。它首先將所有的邊按權值從小到大排序,然後只要t中選中的邊數不到n 1,就做如...
kruskal 最小生成樹
include include 產生隨機數組用 include 同上 include using namespace std 1 帶權邊的類myarc class myarc bool operator const myarc arc myarc myarc int beginvex,int end...
最小生成樹Kruskal
最小生成樹有兩個特點,乙個是保證了所有邊的和是最小值,另乙個是保證了所有邊中的最大值最小。struct edge bool friend operator edge a,edge b 構邊 vectoredge int id max int mini void initial void input ...