10034 Freckles

原创 2016年08月30日 16:41:18

题目大意:

给你n个点的坐标,任意两个点都可以相连

让你找出最小生成树的总边长


思路:最小生成树问题

        prim  or  kruskal


代码:

prim算法(AC)

#include<iostream>
#include<stdio.h>
#include<queue>
#include<functional>
#include<math.h>
#include<cstring>
using namespace std;

struct vertex {
	double x, y;
}v[100];

int n,e[110];
double ans,d[110];;


double dis(const vertex& v1,const vertex& v2)
{
	return sqrt((v1.x - v2.x)*(v1.x - v2.x) + (v1.y - v2.y)*(v1.y - v2.y));
}

void prim()
{
    memset(e, 0, sizeof(e));
    ans = 0;

    e[1]=1;
    for(int i=1;i<=n;i++)
        d[i]=dis(v[1],v[i]);

    while(true){
    double min = 1<<30;
    int j=0;
    for(int i=1;i<=n;i++)
        if(!e[i]&&d[i]<min)
    {

        min = d[i];   //找到最小边以及最小边对应的点
        j=i;
    }
    if(j==0)return;
    ans+=min;
    e[j]=1;//把点加进来,更新d[i]
    for(int i=1;i<=n;i++)
    {
        double tmp=dis(v[j],v[i]);
        if(tmp<d[i])
            d[i] = tmp;
    }

    }

}

void read()
{
    char line[5];
    gets(line);

    cin >> n;
    for (int i = 1; i <= n; i++)
       cin >> v[i].x >> v[i].y;
}

int main()
{

	//freopen( "c:\\data\\10034.txt", "r", stdin);
	int c;
	cin >> c;
	while (c--)
	{
		read();
		prim();
		printf("%.2f\n", ans);
		if(c)printf("\n");
	}

	return 0;
}


相关文章推荐

UVA - 10034 Freckles (kruskal算法)

题目d 在"Dick Van Dyke"的某一集中,小 Richie 尝试把他爸爸背上的斑点连成独立钟的图案。但是其中一个斑点是伤疤,所以 Richie 的尝试失败了。 把 Dick 的背...

UVa10034 Freckles

Problem A: Freckles In an episode of the Dick Van Dyke show, little Richie connects the freckleso...

UVA 10034 - Freckles

Q10034: Freckles給你一些點的座標,把這些點用墨水畫直線連起來,使得所有的點最後都連在一起。你的任務是寫一個程式找出墨水畫出的長度最小是多少?Input輸入的第一列有一個整數,代表以下有...
  • tclh123
  • tclh123
  • 2011年04月09日 23:47
  • 701

UVA:10034 - Freckles

http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=116&page=show_problem&...

UVa 10034 Freckles 解答

题目描述:http://uva.onlinejudge.org/external/100/10034.html 典型的最小生成树算法,使用Kruskal算法实现 需要注意的是并查集的使用,...

UVa 10034 Freckles (最小生成树+kruskal)

#include #include #include #include #include #include #include #include #include #include #include #...

uva 10034 - Freckles

In an episode of the Dick Van Dyke show, little Richie connects the freckles on his Dad’s back to fo...

UVA_10034_Freckles

#include #include #include #include #include #include #include #include #include #...
  • cxy7tv
  • cxy7tv
  • 2016年04月07日 22:52
  • 88

UVa10034/POJ2560_Freckles(最小生成树)(小白书图论专题)

解题报告 题意: 把所有点连起来,求使用的墨水最少。 思路: 裸最小生成树。 #include #include #include #include #define inf 0x3f3f3f3...

UVaOJ 10034 - Freckles

——by A Code Rabbit Description 求直角坐标系上能够把几个点相连起来最短线段的长度。 输入每个点的坐标。 输出最短线段的长度。 Types ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:10034 Freckles
举报原因:
原因补充:

(最多只允许输入30个字)