4点对75分,其他5个点#2 6 7 8 9全TLEqwq
查看原帖
4点对75分,其他5个点#2 6 7 8 9全TLEqwq
666940
Wufei_OvO楼主2023/8/5 09:12

这是代码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";
	}
}
2023/8/5 09:12
加载中...