求条悬无数关
查看原帖
求条悬无数关
794188
furina_1013楼主2024/11/6 23:05

思路:暴力枚举每一条边,再将前p大的边用卫星通话, a[bbb-p]位就是最短距离

#include<bits/stdc++.h>
using namespace std;
double a[250005];
int bbb;
int s,p; 
double xx[500005],yy[500005]; 
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	cin>>s>>p;
	bbb=1;
	for(int i=1;i<=p;i++)
	{
		cin>>xx[i]>>yy[i];
	}
	for(int i=1;i<=p;i++)
	{
		for(int j=i+1;j<=p;j++)
		{
			a[bbb]=sqrt(pow(xx[i]-xx[j],2)+pow(yy[i]-yy[j],2));
			bbb++;
		}
	}
	sort(a+1,a+bbb+1);
	cout<<setiosflags(ios::fixed)<<setprecision(2);
	for(int i=bbb;i>=1;i--)
	{
		if(p==0)
		{
			cout<<a[i];return 0;
		}
		else p--; 
	}
	return 0;
}


2024/11/6 23:05
加载中...