zoukankan      html  css  js  c++  java
  • HDOJ1162Eddy's picture

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1162

    #include<stdio.h>
    #include<math.h>
    bool P[110];//标记数组,标记某一个点是否已经连接到树上
    struct point
    {
    	double x,y;
    }Point[110],A[110];
    double SegLen(point a,point b)
    {
    	return sqrt((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y));
    }
    int main()
    {
    	int n,i,num,j;
    	int Min;				//Min表示第Min个点到已经连接起来的点的距离最短
    	double lenth,minlenth,L;//lenth保存两点之间的距离,minlenth保存未连接到树中任一点的最短距离
    	while(~scanf("%d",&n))
    	{
    		//输入所有的点,并初始化所有的点都未连接到已有的树上
    		for(i = 0; i < n; i++)
    		{
    			scanf("%lf%lf",&Point[i].x,&Point[i].y);
    			P[i] = true;
    		}
    		//将第一个点当做根,开始遍历所有点
    		P[0] = false;
    		num = 0;
    		A[num++] = Point[0];
    		L = 0.0;//z最小长度初始化为0.0
    		while(num < n)
    		{
    			minlenth = 10000000;//每一求最短路的时候初始化最短路为无穷大
    			for(i = 1; i < n; i++)
    			{
    				if( P[i] )
    					for(j = 0; j < num;j ++)//求树中的点到第i个点的最短距离
    					{
    						lenth = SegLen(Point[i],A[j]);
    						if(minlenth > lenth)
    						{
    							minlenth = lenth;//记录最短距离,	
    							Min = i;		//	未连接到树上的点中,第i个点到树上某一个点的距离最短
    						}
    					}
    			}
    			P[Min] = false;
    			A[num++] = Point[Min];
    			L += minlenth;
    			
    		}
    		printf("%.2lf\n",L);
    	}
    	return 0;
    }


     

  • 相关阅读:
    HTML事件处理程序---内联onclick事件
    js的width函数
    了解跨站请求伪造CSRF
    离线百度地图
    GetOverlappedResult 函数
    OVERLAPPED 结构
    SetupDi系列函数
    Linux 各个命令的缩写原型
    Linux grep命令
    Linux if[......] then ......else...... fi
  • 原文地址:https://www.cnblogs.com/LUO257316/p/3220845.html
Copyright © 2011-2022 走看看