社区讨论

double类型为什么输出nan

学术版参与者 3已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@mi7uvggh
此快照首次捕获于
2025/11/21 04:00
4 个月前
此快照最后确认于
2025/11/21 04:00
4 个月前
查看原帖
本机输出正常,到评测姬上就nan了
CPP
#include<bits/stdc++.h>
using namespace std;
const int N=5005;
int n,k,cnt,x[N],y[N],fa[N];
struct edge{
	int u,v;
	double w;
}e[N*N/2];
int cmp(edge x1,edge x2) {return x1.w<x2.w;}
int getfa(int x) {return x==fa[x]?x:fa[x]=getfa(fa[x]);}
double dis(int a,int b) {
	return sqrt((x[a]-x[b])*(x[a]-x[b])+(y[a]-y[b])*(y[a]-y[b]));
}

int main() {
	scanf("%d%d",&n,&k);
	for(int i=1;i<=n;i++) fa[i]=i;
	for(int i=1;i<=n;i++) 
	 scanf("%d%d",&x[i],&y[i]);
	for(int i=1;i<n;i++)
	 for(int j=i+1;j<=n;j++)
	  e[++cnt].w=dis(i,j),e[cnt].u=i,e[cnt].v=j;
	sort(e+1,e+cnt+1,cmp);
	int tot=0;
	for(int i=1;i<=cnt;i++) {
		int X=getfa(e[i].u),Y=getfa(e[i].v);
		if(X!=Y) tot++,fa[X]=Y;
		if(tot==n-k) {printf("%.2llf",e[i].w);return 0;}
	}
}

回复

2 条回复,欢迎继续交流。

正在加载回复...