这是代码qwq:
#include <bits/stdc++.h>
using namespace std;
const int Maxn = 2e5 + 3;
int Ans = 0x3f3f3f3f;
int F[Maxn];
int N,M;
bool Flag;
struct Edge
{
int U,V,Dis;
bool operator <(const Edge &A)
{
return Dis < A.Dis;
}
}E[Maxn];
int Find(int Num)
{
if(F[Num] == Num)
{
return Num;
}
return F[Num] = Find(F[Num]);
}
void _(int U,int V)
{
F[V] = U;
}
void K(int Num)
{
for(int i = 1;i <= N;i++)
{
F[i] = i;
}
int Cnt = 0;
for(int i = Num;i <= M;i++)
{
int X = Find(E[i].U);
int Y = Find(E[i].V);
if(X != Y)
{
_(X,Y);
if(++Cnt == N - 1)
{
Flag = 1;
Ans = min(Ans,E[i].Dis - E[Num].Dis);
break;
}
}
}
}
int main()
{
cin >> N >> M;
for(int i = 1;i <= M;i++)
{
cin >> E[i].U >> E[i].V >> E[i].Dis;
}
sort(E + 1,E + M + 1);
for(int i = 1;i <= M;i++)
{
K(i);
}
if(Flag == 1)
{
cout << Ans << endl;
}else
{
cout << "-1";
}
}