P1265 公路修建 (最小生成树)

Posted feiief

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了P1265 公路修建 (最小生成树)相关的知识,希望对你有一定的参考价值。

题目链接

技术图片

 

 

 1 #include <bits/stdc++.h>
 2 # define LL long long
 3 using namespace std;
 4 
 5 const int maxn=5000+10;
 6 int n;
 7 LL dis[maxn];
 8 int complete[maxn];
 9 
10 struct City{
11     LL x,y;
12 }cities[maxn];
13 
14 LL operator*(City &c1, City &c2){
15     return (c1.x-c2.x)*(c1.x-c2.x)+(c1.y-c2.y)*(c1.y-c2.y);
16 }
17 
18 int main(){
19     scanf("%d", &n);
20     for(int i=1;i<=n;++i){
21         scanf("%lld %lld", &cities[i].x, &cities[i].y);
22     }
23     memset(dis,127,sizeof(dis));
24     dis[1]=0;
25     for(int i=1;i<=n-1;++i){
26         int u=0;
27         for(int j=1;j<=n;++j){
28             if(complete[j]==1) continue;
29             if(u==0) u=j;
30             else{
31                 if(dis[j]<dis[u]) u=j;
32             }
33         }
34         complete[u]=1;
35         for(int j=1;j<=n;++j){
36             if(complete[j]==1) continue;
37             dis[j]=min(dis[j],cities[u]*cities[j]);
38         }
39     }
40     double res=0;
41     for(int i=1;i<=n;++i){
42         res+=sqrt((double)dis[i]);
43     }
44     printf("%.2f", res);
45     return 0;
46 }

 

以上是关于P1265 公路修建 (最小生成树)的主要内容,如果未能解决你的问题,请参考以下文章

luogu P1265 公路修建 最小生成树

洛谷——P1265 公路修建

洛谷P1265 公路修建(Prim)

P1265 公路修建

BZOJ 1196 公路修建问题(二分+最小生成树)

最小生成树kruskal-修建公路1