UVa1935

来源:互联网 发布:淘宝代发网 编辑:程序博客网 时间:2024/06/03 19:41

#include <iostream>

#include <cstdio>

#include <cstring>

#include <algorithm>

#define MAXN 110

#define INF 999999999

using namespace std;


int n,m;

int fa[MAXN];

int maxn;

struct node

{

    int x,y;

    int d;

    bool operator < (const node& a)const

    {

        return d < a.d;

    }

};

node date[MAXN*MAXN];

int find(int x)

{

    return x == fa[x]?x:fa[x] = find(fa[x]);

}


bool MTS(int x )

{

    maxn = -1;

    int num = 0;

    for( int i = 0; i <= n; i ++)

    {

        fa[i] = i;

    }

    for( int i = x; i < m; i ++)

    {

        int root1 = date[i].x;

        int root2 = date[i].y;

        int d = date[i].d;

        int X = find(root1);

        int Y = find(root2);

        if(X != Y)

        {

            fa[X] = Y;

            maxn = max(d,maxn);

            if(++num == n-1)

            {

                return true;

            }

        }

    }

    return false;

}

int main()

{

    while(scanf("%d%d",&n,&m))

    {

        if(n == 0 && m == 0)

            break;


        for( int i = 0 ; i < m; i ++)

        {

            scanf("%d%d%d",&date[i].x,&date[i].y,&date[i].d);

        }

        sort(date,date+m);

        int ans = INF;

        for( int i = 0 ; i < m; i ++)

        {

            if(MTS(i))

            {

                ans = min(ans,maxn - date[i].d);

            }


        }

        if(ans == INF)

            printf("-1\n");

        else

        {

            printf("%d\n",ans);

        }

    }


    return 0;

}


0 0
原创粉丝点击