数组没超过内存,大于题目所给,为什么会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吗???