x 省剛經歷一場不小的**,所有城市之間的道路都損壞掉了,所以省長想請你將城市之間的道路重修一遍。
因為很多城市之間的地基都被**破壞導致不能修公路了,所以省長給定了你一些城市對,在這些城市對之間可以修公路,並且都有相應的**。而且因為施工隊伍有限,所以省長要求用盡量少的道路將所有的城市連通起來,這樣施工量就可以盡量少,道路可視為無向邊,且資料保證至少有一種連通的方案。不過,省長為了表示自己的公正無私,要求在滿足上述條件的情況下,選擇一種方案,使得該方案中最貴道路的**和最便宜道路的**的差值盡量小,即使這樣的方案會使總價提公升很多也沒關係。
那麼,請你盡快地安排一種合理的方案,滿足省長的要求。
第一行兩個數 n,m,表示城市的個數以及可以修的公路數;
第二行開始 m 行,每行三個數 a,b,c,表示 a,b 之間可以修一條價值 c 的無向道路。
乙個數表示該方案中最大邊減去最小邊的值,要求要盡量的小。
5 101 2 9384
1 3 887
1 4 2778
1 5 6916
2 3 7794
2 4 8336
2 5 5387
3 4 493
3 5 6650
4 5 1422
1686【樣例說明】 選第 4,5,6,9 條邊即可。
【資料說明】
100%資料滿足 n<=m<=5000,0思路:這題是19年寒假集訓結訓題,當時還是蠢了居然沒有思路。(好像是我看錯了資料範圍覺得m^2lgm過不了)很簡單,暴力跑克魯斯卡爾就行了,當最小邊確定的時候,最大邊也就確定了,(使得圖連通的邊就是最大邊)因此我們列舉最小邊即可。
#include #define inf 0x3f3f3f3f
using namespace std;
struct edge
};edge edge[5005];
int f[5005];
int n,m;
int ans=inf;
void init()
int find(int x)
bool union(int x,int y)
return 0;
}int main()
sort(edge,edge+m);
int cnt=0;
for(int i=0;i}
if(cntbreak;
} printf("%d\n",ans);
return 0;
}
CCF CSP 最小差值
最小差值 試題編號 201712 1 試題名稱 最小差值 時間限制 1.0s 記憶體限制 256.0mb 問題描述 問題描述 給定n個數,請找出其中相差 差的絕對值 最小的兩個數,輸出它們的差值的絕對值。輸入格式 輸入第一行包含乙個整數n。第二行包含n個正整數,相鄰整數之間使用乙個空格分隔。輸出格式...
CCF 最小差值
試題編號 201712 1 試題名稱 最小差值 時間限制 1.0s 記憶體限制 256.0mb 問題描述 問題描述 給定n個數,請找出其中相差 差的絕對值 最小的兩個數,輸出它們的差值的絕對值。輸入格式 輸入第一行包含乙個整數n。第二行包含n個正整數,相鄰整數之間使用乙個空格分隔。輸出格式 輸出乙個...
20171201 最小差值
問題描述 試題編號 201712 1 試題名稱 最小差值 時間限制 1.0s 記憶體限制 256.0mb 問題描述 問題描述 給定n個數,請找出其中相差 差的絕對值 最小的兩個數,輸出它們的差值的絕對值。輸入格式 輸入第一行包含乙個整數n。第二行包含n個正整數,相鄰整數之間使用乙個空格分隔。輸出格式...