设为首页 加入收藏

TOP

hdu 1162 Eddy's picture(基础最小生成树)
2015-07-24 06:38:48 来源: 作者: 【 】 浏览:62
Tags:hdu 1162 Eddy' picture 基础 最小 生成

题目:

连接:点击打开链接

题意:

n个点,是每个点相互连通(直接间接),求最短距离。

思路:

prim()最小生成树。把点的距离存在map中。

代码:

#include
  
   
#include
   
     #include
    
      #include
     
       using namespace std; #define MAXN 110 #define MAX 100000000 struct node{ double x,y; }p[MAXN]; double map[MAXN][MAXN]; double low[MAXN]; int vis[MAXN]; int n; void prim() { int pos; double minn; double result = 0; memset(vis,0,sizeof(vis)); pos = 1; vis[pos] = 1; for(int i=1; i<=n; i++) { if(i != pos) low[i] = map[pos][i]; } for(int i=1; i
      
        low[j]) { minn = low[j]; pos = j; } } result += minn; vis[pos] = 1; for(int j=1; j<=n; j++) { if(!vis[j] && map[pos][j] < low[j]) low[j] = map[pos][j]; } } printf("%.2lf\n",result); } int main() { //freopen("input.txt","r",stdin); while(scanf("%d",&n) != EOF) { for(int i=1; i<=n; i++) scanf("%lf%lf",&p[i].x,&p[i].y); for(int i=1; i<=n; i++) { for(int j=1; j<=n; j++) map[i][j] = sqrt((p[i].x-p[j].x)*(p[i].x-p[j].x) + (p[i].y-p[j].y)*(p[i].y-p[j].y)); } prim(); } return 0; } 
      
     
    
   
  

-----------------------------------------------------------------------------------

战斗,永不停歇~~~~~~~~~~~~~~~~~~~~~

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇hdu2049(组合数学) 下一篇hdu(2062)-Subset sequence 组合..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: