| 比赛 | 
    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;
}