样例能过,全RE
#include<bits/stdc++.h>
namespace Fast {
inline int read() {
int x=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9') {
if(ch=='-')
f=-1;
ch=getchar();
}
while(ch>='0' && ch<='9')
x=x*10+ch-'0',ch=getchar();
return x*f;
}
void write(int x) {
if(x<0)
putchar('-'),x=-x;
if(x>9)
write(x/10);
putchar(x%10+'0');
return;
}
}
using namespace std;
using namespace Fast;
const int N=2145;
struct Edge {
int x,y,dis;
} edge[N*N];
int fa[N*N];
bool cmp(Edge x,Edge y) {
return x.dis<y.dis;
}
int find(int x) {
if(fa[x]!=x)return fa[x]=find(fa[x]);
return fa[x];
}
int merge(int x,int y) {
x=find(x);
y=find(y);
fa[x]=y;
return fa[x];
}
int init(int n) {
for(int i=1; i<=n; i++) {
fa[i]=i;
}
}
int main() {
int n,m;
int cnt=0,js=0;
n=read(),m=read();
init(m);
for(int i=1; i<=m; i++) {
for(int j=1; j<=m; j++) {
edge[++cnt].dis=read();
edge[cnt].x=i;
edge[cnt].y=j;
}
}
sort(edge+1,edge+cnt+1,cmp);
int ans=n;
for(int i=1; i<=cnt; i++) {
if(find(edge[i].x)!=find(edge[i].y)) {
merge(edge[i].x,edge[i].y);
cnt++;
ans+=edge[i].dis;
}
}
write(ans);
return 0;
}
报错信息
Runtime Error.
Received signal 11: Segmentation fault with invalid memory reference.
说我内存引用无效