比赛 |
NOIP水题争霸赛 |
评测结果 |
WAWWWWWWWWWWWWWWWWWW |
题目名称 |
最小差异值 |
最终得分 |
5 |
用户昵称 |
crystal |
运行时间 |
0.044 s |
代码语言 |
C++ |
内存使用 |
0.70 MiB |
提交时间 |
2018-02-11 21:37:29 |
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
using namespace std;
template <class E>inline void read(E &e){
e=0;char c=getchar();bool eh=0;
while(c>'9'||c<'0'){if(c=='-')eh=1;c=getchar();}
while(c>='0'&&c<='9'){e=e*10+c-48;c=getchar();}
if(eh) e=-e;
}
struct node{
int b,w,a;
}e[5001*4];
int cnt=0;
void add(int a,int b,int w){
e[++cnt].b=b;
e[cnt].w=w;
e[cnt].a=a;
}
int fa[50001];
int find(int n){
return n==fa[n]?n:fa[n]=find(fa[n]);
}
bool cmp(const node &x,const node &y){
if(x.w>y.w) return 0;
return true;
}
int main(){
freopen("dvalue.in","r",stdin);
freopen("dvalue.out","w",stdout);
int n,m;
read(n);read(m);
for(int i=1;i<=n;++i) fa[i]=i;
for(int i=1;i<=m;++i){
int x,y,w;
read(x);read(y);read(w);
add(x,y,w);
}
sort(e+1,e+cnt+1,cmp);
int sum=0;
for(int i=1;i<=m;++i){
int aa=find(e[i].a);
int bb=find(e[i].b);
if(aa==bb) continue;
sum++;
fa[aa]=bb;
if(sum==n-1) printf("%d\n",e[i].w-e[1].w);
}
return 0;
}