zoukankan      html  css  js  c++  java
  • hdu 畅通工程再续

    http://acm.hdu.edu.cn/showproblem.php?pid=1875

     1 #include <cstdio>
     2 #include <cstring>
     3 #include <cmath>
     4 #include <algorithm>
     5 #define maxn 1001
     6 using namespace std;
     7 const int inf=1<<30;
     8 
     9 int n;
    10 double g[maxn][maxn];
    11 bool vis[maxn];
    12 double dis[maxn];
    13 double sum;
    14 bool flag=true;
    15 
    16 struct node
    17 {
    18     int x,y;
    19 }p[maxn];
    20 
    21 
    22 int sqr(int x)
    23 {
    24     return x*x;
    25 }
    26 
    27 double dist(int x1,int y1,int x2,int y2)
    28 {
    29     return sqrt(sqr(x1-x2)+sqr(y1-y2));
    30 }
    31 
    32 void prim()
    33 {
    34     memset(vis,false,sizeof(vis));
    35     for(int i=0; i<n; i++) dis[i]=g[0][i];
    36     dis[0]=0;
    37     vis[0]=true;
    38     for(int i=1; i<n; i++)
    39     {
    40         double m=(double)inf;
    41         int x;
    42         for(int y=0; y<n; y++) if(!vis[y]&&dis[y]<m) m=dis[x=y];
    43         if(m==inf){flag=false;break;}
    44         sum+=m;
    45         vis[x]=true;
    46         for(int y=0; y<n; y++) if(!vis[y]&&dis[y]>g[x][y]) dis[y]=g[x][y];
    47 
    48     }
    49 }
    50 int main()
    51 {
    52     int t;
    53     scanf("%d",&t);
    54     while(t--)
    55     {
    56        scanf("%d",&n);
    57        for(int i=0; i<200; i++)
    58        {
    59            for(int j=0; j<200; j++)
    60            {
    61                if(i==j) g[i][j]=0;
    62                else
    63                 g[i][j]=g[j][i]=inf;
    64            }
    65        }
    66        for(int i=0; i<n; i++)
    67        {
    68            scanf("%d%d",&p[i].x,&p[i].y);
    69        }
    70        for(int i=0; i<n; i++)
    71        {
    72            for(int j=0; j<n; j++)
    73            {
    74                if(i!=j){
    75                double d=dist(p[i].x,p[i].y,p[j].x,p[j].y);
    76                if(d>=10.0&&d<=1000.0) g[i][j]=d;
    77                }
    78            }
    79        }
    80        flag=true;
    81        sum=0.0;
    82        prim();
    83        if(!flag) printf("oh!
    ");
    84        else
    85        printf("%.1lf
    ",(sum*100));
    86     }
    87     return 0;
    88 }
    View Code
  • 相关阅读:
    Vue.js 章6 v-model与表单
    Vue.js 简单购物车开发
    Vue.js实战 章五:内置指令
    Vue stage3
    Vue初接触 stage1
    前端代码的一些恶优化
    websocket介绍 以及 vue websocket使用案例
    回忆一下跨域
    如何使用Flexible这样的一库来完成H5页面的终端适配
    css 输入px单位的数值 直接转换为rem的插件
  • 原文地址:https://www.cnblogs.com/fanminghui/p/3667104.html
Copyright © 2011-2022 走看看