求助
  • 板块灌水区
  • 楼主fanxing1124
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/9/7 20:54
  • 上次更新2023/11/2 22:25:09
查看原帖
求助
778970
fanxing1124楼主2023/9/7 20:54

这道题

#include<bits/stdc++.h>
#define uf(x,y,z) for(int x=y;x<=z;x++)
#define df(x,y,z) for(int x=y;x>=z;x--)
#define int long long
using namespace std; 
int n,c,x[2010],y[2010],f[2010],cnt,t,sum;
struct node
{
	int t,x,y;
 } a[4000010];
 int cmp(node a,node b)
 {
 	return a.t<b.t;
 }
int find(int x)
{
	if(x==f[x])return x;
	else f[x]=find(f[x]);
}
int s(int x1,int x2,int y1,int y2)
{
	return (x1-x2)*(x1,x2)+(y1-y2)*(y1-y2);
}
signed main()
{
	cin>>n>>c;
	uf(i,1,n)scanf("%d%d",&x[i],&y[i]);
	uf(i,1,n-1)
	{
		uf(j,i+1,n)
		{
			if(s(x[i],x[j],y[i],y[j])>=c)
			{
				cnt++;
				a[cnt].x=i;
				a[cnt].y=j;
				a[cnt].t=s(x[i],x[j],y[i],y[j]);
			}
		}
	}
	sort(a+1,a+cnt+1,cmp);
	uf(i,1,n)f[i]=i;
	uf(i,1,cnt)
	{
		if(find(a[i].x)!=find(a[i].y))
		{
			sum+=a[i].t;
			t++;
		}
		if(t==n-1)
		{
			cout<<sum<<endl;
			return 0;
		}
	} 
	cout<<-1<<endl;
	return 0;
}

哪里错了

2023/9/7 20:54
加载中...