HDU 5624 KK's Reconstruction(最小生成树)

题目链接:点击打开链接

题意:n个城市, m条可以修建的路, 修每条路有一个费用, 要求修建路将n个城市全部联通,并且最大费用减去最小费用最小。

思路:枚举最小边, 然后重新求一遍最小生成树,复杂度m^2, 出的数据水了, 昨天BC水过了。。

细节参见代码:

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define Max(a,b) ((a)>(b)?(a):(b))
#define Min(a,b) ((a)<(b)?(a):(b))
using namespace std;
typedef long long ll;
const double PI = acos(-1.0);
const double eps = 1e-6;
const int mod = 1000000000 + 7;
const ll INF = (ll)2100000000;
const int maxn = 2000 + 10;
const int maxm = 15000 + 10;
int T,n,m,p[maxn];
struct node {
    ll a, b, c;
    bool operator < (const node& rhs) const {
        return c < rhs.c;
    }
}a[maxm];
int _find(int x) { return p[x] == x ? x : p[x] = _find(p[x]); }
int main() {
    scanf("%d",&T);
    while(T--) {
        scanf("%d%d",&n,&m);
        for(int i=0;i


你可能感兴趣的:(HDOJ,图论,BestCoder,ACM竞赛)