• 洛谷P1265 公路修建


     1 /*
     2 用kuskal会被卡
     3 一边prim一边算两点间距离(边权)
     4 否则会MLE
     5 另:不开long long见祖宗 
     6 */
     7 #include<bits/stdc++.h>
     8 using namespace std;
     9 const int maxn=5005;
    10 const int INF=0x3f3f3f3f;
    11 typedef pair<double,int> P;
    12 priority_queue< P,vector<P>,greater<P> >q;
    13 bool v[maxn];
    14 int n,m;
    15 double ans,dis[maxn];
    16 struct point{int x,y;}d[maxn];
    17 double Dis(const point &x,const point &y){return sqrt((long long)(x.x-y.x)*(x.x-y.x)+(long long)(x.y-y.y)*(x.y-y.y));}
    18 void prim()
    19 {
    20     fill(dis,dis+1+n,INF);dis[1]=0;
    21     q.push(make_pair(0,1));
    22     while(!q.empty())
    23     {
    24         int Top=q.top().second;q.pop();
    25         if(v[Top]) continue;ans+=dis[Top];v[Top]=1;
    26         for(int i=1;i<=n;++i)
    27         {
    28             if(!v[i]) 
    29             {
    30                 double tmp=Dis(d[i],d[Top]);
    31                 if(tmp<dis[i])
    32                 {
    33                     dis[i]=tmp;
    34                     q.push(make_pair(dis[i],i));
    35                 }
    36             }
    37         }
    38     }
    39 }
    40 int main()
    41 {
    42     scanf("%d",&n);
    43     for(int i=1;i<=n;++i) scanf("%d%d",&d[i].x,&d[i].y);
    44     prim();
    45     printf("%.2lf",ans);
    46     return 0;
    47 }
  • 相关阅读:
    TypeScript-基础-09-声明文件
    TypeScript-基础-08-类型断言
    TypeScript-基础-07-函数的类型
    TypeScript-基础-06-数组的类型
    TypeScript-基础-05-对象的类型—接口
    TypeScript-基础-04-联合类型
    TypeScript-工程
    小白学前端03
    小白学前端02
    小白学前端
  • 原文地址:https://www.cnblogs.com/yu-xing/p/10262003.html
Copyright © 2020-2023  润新知