记录编号 |
584566 |
评测结果 |
AAAAAAAAAAAAAAAAAAAA |
题目名称 |
最小差异值 |
最终得分 |
100 |
用户昵称 |
宇战 |
是否通过 |
通过 |
代码语言 |
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;
}