记录编号 584578 评测结果 AAAAAAAAAAAAAAAAAAAA
题目名称 最小差异值 最终得分 100
用户昵称 Gravatar小金 是否通过 通过
代码语言 C++ 运行时间 1.623 s
提交时间 2023-11-13 17:33:44 内存使用 2.91 MiB
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
struct bian{
	int x,y;
	long long c;
}e[5010];
int n,m,f[5010];
long long ans=0x3f3f3f3f3f3f3f3f;
bool cmp(bian a,bian b)
{
	if(a.c==b.c)
	{
		return a.x<b.x;
	}
	else
	{
		return a.c<b.c;
	}
}
void chu()
{
	for(int i=1;i<=n;i++)
	{
		f[i]=i;
	}
}
int find(int x)
{
	if(f[x]==x)
	{
		return x;
	}
	else
	{
		return f[x]=find(f[x]);
	}
}
void kruskal(int q)
{
	chu();
	int t=0;
	for(int i=q;i<=m;i++)
	{
		int fx=find(e[i].x);
		int fy=find(e[i].y);
		if(fx!=fy)
		{
			f[fy]=fx;
			t++;
		}
		if(t==n-1)
		{
			if(e[i].c-e[q].c<ans)
			{
				ans=e[i].c-e[q].c;
			}
			break;
		}
	}
}
int main()
{
	freopen("dvalue.in","r",stdin);
    freopen("dvalue.out","w",stdout);
	cin>>n>>m;
	for(int i=1;i<=m;i++)
	{
		cin>>e[i].x>>e[i].y>>e[i].c;
	}
	sort(e+1,e+m+1,cmp);
	for(int i=1;i<=m-n+2;i++)
	{
		kruskal(i);
	}
	cout<<ans;
	return 0;
}