记录编号 584566 评测结果 AAAAAAAAAAAAAAAAAAAA
题目名称 最小差异值 最终得分 100
用户昵称 Gravatar宇战 是否通过 通过
代码语言 C++ 运行时间 0.965 s
提交时间 2023-11-13 16:54:01 内存使用 10.50 MiB
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int n,m,f[1000000],ans=0x3f3f3f3f;
struct node{
    int from,to,cost;
}a[1000000];
bool cmp(node x,node y){
    return x.cost<y.cost;
}
int find(int x){
    if(x==f[x])return x;
    return f[x]=find(f[x]);
}
int check(int x,int y){
    int xx=find(x);
    int yy=find(y);
    if(xx!=yy){
        f[xx]=yy;
        return 1;
    }
    return 0;
}
int main(){
    freopen("dvalue.in","r",stdin);
    freopen("dvalue.out","w",stdout);
    cin>>n>>m;
    for(int i=0;i<m;i++){
        cin>>a[i].from>>a[i].to>>a[i].cost;
    }
    sort(a,a+m,cmp);
    
    if(n<=2){
        cout<<0;
        return 0;
    }
    int sum=0;
    for(int i=0;i<m;i++){
        for(int o=1;o<=n;o++){
                f[o]=o;
        }
        sum=0;
        for(int j=i;j<m;j++){
            sum+=check(a[j].from,a[j].to);
            if(sum==n-1){
                ans=min(ans,a[j].cost-a[i].cost);
                break;
            }
            
        }
        if(sum<n-1){
            break;
        }
    }
    cout<<ans;
}