Uva(1395)(Slim Span)

链接:https://vjudge.net/problem/UVA-1395
思路:表面看起来跟最小生成树没什么关系,其实不然,由于点比较少,可以用kruskal之前枚举边的起点,然后贪心取就可以得到当前枚举的最大边和最小边差值的最小,然后更新值即可,一开始我既枚举了起点又枚举了终点,完全没必要,浪费了一个n的复杂度被T了,后来发现完全是浪费改掉之后就A了
代码:

#include
using namespace std;

const int maxn = 110;
int n,m;

struct edge{
    int from,to,dist;
    edge(){}
    edge(int f,int t,int d):from(f),to(t),dist(d){}
    bool operator<(const edge &r)const{
        return dist G[maxn];
    int m,n;
    int par[maxn];
    vector edges;
    int done;

    void init(int n){
        this->n = n;
        for(int i=0;i<=n;i++)G[i].clear();
        edges.clear();
        for(int i=0;i

你可能感兴趣的:(Uva(1395)(Slim Span))