求助,莫名其妙RE
查看原帖
求助,莫名其妙RE
467616
osky123456楼主2022/2/20 11:41

数组没超过内存,大于题目所给,为什么会RE???

#include<bits/stdc++.h>
#define maxn 200005
using namespace std;
int n,m,fa[maxn],num,cnt;
long double ans;
struct Edge{
	int u,v;
	long double w;
}edge[maxn<<1];
struct DOTE{
	int x,y;
}d[maxn];
bool cmp(Edge a,Edge b){ 
    if(a.w==b.w) return a.u<b.u;
    return a.w<b.w; 
}
int find(int x){
	if(fa[x]!=x) fa[x]=find(fa[x]);
	return fa[x];
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;++i) cin>>d[i].x>>d[i].y;
	for(int i=1;i<=n;++i){
		for(int j=i+1;j<=n;++j){
			edge[++cnt].w=(long double)sqrt((long double)(d[i].x-d[j].x)*(d[i].x-d[j].x)+(long double)(d[i].y-d[j].y)*(d[i].y-d[j].y));
			edge[cnt].u=i;
			edge[cnt].v=j;
		}
	}
	for(int i=1;i<=m;++i) cin>>edge[++cnt].u>>edge[cnt].v;
	sort(edge+1,edge+1+cnt,cmp);
	for(int i=1;i<=n;++i) fa[i]=i;
	for(int i=1;i<=cnt;++i){
		int x=edge[i].u,y=edge[i].v;
		if(find(x)!=find(y)){
			fa[find(x)]=find(y);
			ans+=edge[i].w;
		}
	}
	printf("%.2f",ans);
	return 0;
}

运行过程有什么地方容易RE吗???

2022/2/20 11:41
加载中...