hdu 1598 find the most comfortable road(並查集+枚舉)
find the most comfortable road
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 4899 Accepted Submission(s): 2131
Problem Description XX星有許多城市,城市之間通過一種奇怪的高速公路SARS(Super Air Roam Structure---超級空中漫游結構)進行交流,每條SARS都對行駛在上面的Flycar限制了固定的Speed,同時XX星人對 Flycar的“舒適度”有特殊要求,即乘坐過程中最高速度與最低速度的差越小乘坐越舒服 ,(理解為SARS的限速要求,flycar必須瞬間提速/降速,痛苦呀 ),
但XX星人對時間卻沒那麼多要求。要你找出一條城市間的最舒適的路徑。(SARS是雙向的)。
Input 輸入包括多個測試實例,每個實例包括:
第一行有2個正整數n (1
接下來的行是三個正整數StartCity,EndCity,speed,表示從表面上看StartCity到EndCity,限速為speedSARS。speed<=1000000
然後是一個正整數Q(Q<11),表示尋路的個數。
接下來Q行每行有2個正整數Start,End, 表示尋路的起終點。
Output 每個尋路要求打印一行,僅輸出一個非負整數表示最佳路線的舒適度最高速與最低速的差。如果起點和終點不能到達,那麼輸出-1。
Sample Input
4 4
1 2 2
2 3 4
1 4 1
3 4 2
2
1 3
1 2
Sample Output
1
0
中文題目就不用說題意了 並查集,排序加枚舉,下邊是我理解大神代碼猴,自己加的注釋,,唉,,只怪自己太菜 2015,,7,,22
#include
#include
#include
using namespace std;
struct node
{
int sc,ec,speed;
}a[1100];
int f[210];
int n,m;
bool cmp(node a,node b){ return a.speed=ans) continue;
merge(a[j].sc,a[j].ec);
if(find(s)==find(e))//如果起點和終點連通時 ,此時的a[j].speed就是這條路線的最大速度
{
if(ans>a[j].speed-a[i].speed)
ans=a[j].speed-a[i].speed;
}
}
}
return ans;
}
int main(){
int i,t,s,e;
while(~scanf(%d%d,&n,&m))
{
for(i=0;i