题解
2025-08-22 11:27:00
发布于:广东
#include<bits/stdc++.h>
using namespace std;
struct zb{
int x,y;
}b[1000005];
struct node{
int x,y;
double z;
}a[1000005];
int tr[1000005];
int find(int x){
if(tr[x]==x) return x;
return tr[x]=find(tr[x]);
}
bool cmp(node x,node y){
return x.z < y.z;
}
int main(){
int n,m;
cin>>n>>m;
for(int i=1;i<=m;i++) tr[i] = i;
for(int i=1;i<=m;i++){
cin>>b[i].x>>b[i].y;
}
int idx=0;
for(int i=1;i<=m;i++){
for(int j=1;j<i;j++){
a[idx].x=i;
a[idx].y=j;
int xx = b[i].x-b[j].x;
int yy = b[i].y-b[j].y;
a[idx].z = sqrt(xxxx+yyyy);
}
}
sort(a+1,a+idx+1,cmp);
int cnt=0;
for(int i=1;i<=idx;i){
int u = a[i].x;
int v = a[i].y;
double w = a[i].z;
if(find(u) != find(v)){
cnt++;
tr[find(u)] = find(v);
if(cnt == m-n){
printf("%.2f",w);
return 0;
}
}
}
return 0;
}
这里空空如也
有帮助,赞一个