zoukankan      html  css  js  c++  java
  • bzoj 1821: [JSOI2010]Group 部落划分 Group

     1  
     2 #include<cstdio>
     3 #include<iostream>
     4 #include<cmath>
     5 #include<algorithm>
     6 #define M 1008
     7 struct data
     8 {
     9     int a1,a2,d;
    10 }q[M*M];
    11 int x[M],y[M],n,k,cnt,fa[M],sum1;
    12 bool cmp(data b1,data b2)
    13 {
    14     return b1.d<b2.d;
    15 }
    16 int zhao(int a1)
    17 {
    18     if(fa[a1]==a1)
    19       return a1;
    20     fa[a1]=zhao(fa[a1]);
    21     return fa[a1];
    22 }
    23 using namespace std;
    24 int main()
    25 {
    26     scanf("%d%d",&n,&k);
    27     for(int i=1;i<=n;i++)
    28       scanf("%d%d",&x[i],&y[i]);
    29     for(int i=1;i<=n;i++)
    30       for(int j=i+1;j<=n;j++)
    31         {
    32           cnt++;
    33           q[cnt].a1=i;
    34           q[cnt].a2=j;
    35           q[cnt].d=(x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]);
    36         }
    37     sort(q+1,q+cnt+1,cmp);
    38     for(int i=1;i<=n;i++)
    39       fa[i]=i;
    40     for(int i=1;i<=cnt;i++)
    41       {
    42         int b1=zhao(q[i].a1),b2=zhao(q[i].a2);
    43         if(b1!=b2)
    44           {
    45             n--;
    46             fa[b1]=b2;
    47             if(n<k)
    48               {
    49                 printf("%.2lf
    ",sqrt(q[i].d));
    50                             return 0;             
    51               }
    52           }
    53       }
    54 }

    并查集,每次把最近的两个点合并,直到只有k个块。

  • 相关阅读:
    CodeForces
    CodeForces
    CodeForces
    【模板】POJ-1511(dijkstra堆优化+链式前向星)
    【模板】POJ-1502(dijkstra)
    P2862 [USACO06JAN]Corral the Cows G
    P2495 [SDOI2011]消耗战
    CF613D Kingdom and its Cities
    P4655 [CEOI2017]Building Bridges
    P3917 异或序列
  • 原文地址:https://www.cnblogs.com/xydddd/p/5281981.html
Copyright © 2011-2022 走看看