码迷,mamicode.com
首页 > Web开发 > 详细

Arctic Network POJ - 2349

时间:2020-01-29 15:56:54      阅读:65      评论:0      收藏:0      [点我收藏+]

标签:bsp   fir   cstring   sqrt   work   efi   str   namespace   turn   

#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstdio>
#define x first
#define y second
using namespace std;
typedef pair<int,int>PII;
const int N=510,M=N*N/2;
int n,k,m;
struct edge
{
    int a,b;
    double w;
} e[M];
double get_dist(PII a,PII b)
{
    int dx=a.x-b.x;
    int dy=a.y-b.y;
    return sqrt(dx*dx+dy*dy);
}
bool cmp(edge a,edge b)
{
    return a.w<b.w;
}
PII q[M];
int p[N];
int find(int x)
{
    if(p[x]!=x)
        p[x]=find(p[x]);
    return p[x];
}
int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        m=0;
        cin>>k>>n;
        for(int i=0; i<n; i++)
            cin>>q[i].x>>q[i].y;
        for(int i=0; i<n; i++)
            for(int j=0; j<i; j++)
                e[m++]= {i,j,get_dist(q[i],q[j])};
        sort(e,e+m,cmp);
        for(int i=0; i<n; i++)
            p[i]=i;
        int cnt=n;
        double res=0;
        for(int i=0; i<m; i++)
        {
            if(cnt<=k)
                break;
            int a=find(e[i].a);
            int b=find(e[i].b);
            double w=e[i].w;
            if(a!=b)
            {
                p[a]=b;
                cnt--;
                res=w;
            }
        }
        //不能用lf 
        printf("%.2f\n",res);
    }
    return 0;
}

 

Arctic Network POJ - 2349

标签:bsp   fir   cstring   sqrt   work   efi   str   namespace   turn   

原文地址:https://www.cnblogs.com/QingyuYYYYY/p/12240203.html

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