码迷,mamicode.com
首页 > Windows程序 > 详细

AcWing1145 北极通讯网络

时间:2020-05-06 19:31:14      阅读:90      评论:0      收藏:0      [点我收藏+]

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

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

技术图片
#include<bits/stdc++.h>
#define x first
#define y second
using namespace std;
typedef pair<int,int> pll;
const int N=510000;
struct node{
    int a,b;
    double c;
    bool operator <(const node &t) const{
        return c<t.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<=n;i++){
        cin>>q[i].x>>q[i].y;
    }
    for(i=1;i<=n;i++)
    p[i]=i;
    int cnt=0;
    for(i=1;i<=n;i++){
        for(j=1;j<i;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<cnt;i++){
        if(tmp<=k)
        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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!