AcWing1145 北极通讯网络

2021-03-07 04:26

阅读:676

标签:code   col   const   operator   枚举   ret   int   hid   onclick   

这题具有单调性质,可以二分,但是我们发现如果使用并查集维护kruscal,那么无需二分,直接枚举答案即可

技术图片技术图片
#include#define x first
#define y second
using namespace std;
typedef pairint,int> pll;
const int N=510000;
struct node{
    int a,b;
    double c;
    bool operator const node &t) const{
        return ct.c;
    }
}e[N];
pll q[N];
int p[N];
double get(pll a,pll b){
    int x=a.x-b.x;
    int y=a.y-b.y;
    return sqrt(x*x+y*y);
}
int find(int x){
    if(x!=p[x]){
        p[x]=find(p[x]);
    }
    return p[x];
}
int main(){
    int n,k;
    int i,j;
    cin>>n>>k;
    for(i=1;i){
        cin>>q[i].x>>q[i].y;
    }
    for(i=1;i)
    p[i]=i;
    int cnt=0;
    for(i=1;i){
        for(j=1;j){
            e[cnt++]=node{i,j,get(q[i],q[j])};
        }
    }
    sort(e,e+cnt);
    double res=0;
    int tmp=n;
    for(i=0;i){
        if(tmpk)
        break;
        int pa=find(e[i].a),pb=find(e[i].b);
        if(pa!=pb){
            p[pa]=pb;
            tmp--;
            res=e[i].c;
        }
    }
    printf("%.2f\n",res);
}
View Code

 

AcWing1145 北极通讯网络

标签:code   col   const   operator   枚举   ret   int   hid   onclick   

原文地址:https://www.cnblogs.com/ctyakwf/p/12838290.html


评论


亲,登录后才可以留言!