社区讨论
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 条回复,欢迎继续交流。
正在加载回复...