UVA 10034 Freckles

MST直接上代码了

#include <map>
#include <set>
#include <list>
#include <cmath>
#include <ctime>
#include <deque>
#include <stack>
#include <queue>
#include <cctype>
#include <cstdio>
#include <string>
#include <vector>
#include <climits>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
#define LL long long
#define PI 3.1415926535897932626
using namespace std;
int gcd(int a, int b) {return a % b == 0 ? b : gcd(b, a % b);}
#define MAXN 110
int p[MAXN],N,cas;
int Find(int x) {return p[x] == x ? x : p[x] = Find(p[x]);}
struct dis
{
    int u,v;
    double dist;
    friend bool operator < (const dis &a,const dis &b)
    {
        return a.dist < b.dist;
    }
}d[MAXN * MAXN];
struct node
{
    double x,y;
}src[MAXN];
void init()
{
    scanf("%d",&N);
    for (int i = 1; i <= N; i++) scanf("%lf%lf",&src[i].x,&src[i].y);
    cas = 0;
    for (int i = 1; i <= N; i++)
        for (int j = i + 1; j <= N; j++)
     {
        d[cas].u = i; d[cas].v = j;
        //printf("%lf %lf %lf %lf\n",src[i].x,src[j].x,src[i].y,src[j].y);
        d[cas++].dist = sqrt((src[j].x - src[i].x) * (src[j].x - src[i].x) + (src[j].y - src[i].y) * (src[j].y - src[i].y));
     }
    sort(d,d + cas);
}
double kruskal()
{
    double ans = 0;
    //for (int i = 0; i < cas; i++) printf("%d %d %2.lf\n",d[i].u,d[i].v,d[i].dist);
    for (int i = 0; i <= N; i++) p[i] = i;
    for (int i = 0; i < cas; i++)
    {
        int  u = d[i].u, v = d[i].v;
        double w = d[i].dist;
        //printf("%.2lf\n",w);
        int  x = Find(u) , y = Find(v);
        if (x != y)
        {
            //printf("%.2lf\n",w);
            ans += w;
            p[x] = y;
        }
    }
    return ans;
}
int main()
{
    int T;
    scanf("%d",&T);
    while (T--)
    {
        init();
        double ans = kruskal();
        printf("%.2f\n",ans);
        if (T) putchar(‘\n‘);
    }
    return 0;
}
时间: 2024-12-19 13:18:12

UVA 10034 Freckles的相关文章

UVA 10034 Freckles 【最小生成树】

题目链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=975 题意:裸的最小生成树 代码: #include <stdio.h> #include <iostream> #include <string.h> #include <algorithm> #include <math.

uva 10034 Freckles 最小生成树

#include <bits/stdc++.h> using namespace std; int n; double x[105],y[105]; double d[105]; int used[105]; double ma[105][105]; double mst(){ d[0] = 0.0; double ans = 0.0; for(int i = 0;i < n;i++){ double min = DBL_MAX; int minn; for(int j = 0;j &l

10034 - Freckles 克鲁斯克尔最小生成树!~

1 /* 2 10034 - Freckles 3 克鲁斯克尔最小生成树!- 4 */ 5 #include<iostream> 6 #include<cstdio> 7 #include<cmath> 8 #include<algorithm> 9 using namespace std; 10 11 struct node{ 12 double x, y; 13 }; 14 15 struct tree{ 16 int u, v; 17 double d

uva 10034 Problem A: Freckles

http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=975 最小生成树. 1 #include <cstdio> 2 #include <cstring> 3 #include <cmath> 4 #include <algorithm> 5 #define maxn 1000 6 using na

Uva(10034)

这题是要你求讲所有点连起来的最小的代价是多少.连起两点的代价是两个点之间的距离...最基本的最小生成树 #include<stdio.h> #include<string.h> #include<math.h> #include<iostream> #include<algorithm> using namespace std; const int maxn=200; int u[maxn*maxn],v[maxn*maxn]; double d

编程题目分类(剪辑)

1. 编程入门 2. 数据结构 3. 字符串 4. 排序 5. 图遍历 6. 图算法 7. 搜索:剪枝,启发式搜索 8. 动态规划/递推 9. 分治/递归 10. 贪心 11. 模拟 12. 算术与代数 13. 组合问题 14. 数论 15. 网格,几何,计算几何 [编程入门] PC 110101, uva 100, The 3n+1 problem, 难度 1 PC 110102, uva 10189, Minesweeper, 难度 1 PC 110103, uva 10137, The T

UVA题目分类

题目 Volume 0. Getting Started 开始10055 - Hashmat the Brave Warrior 10071 - Back to High School Physics 10300 - Ecological Premium 458 - The Decoder 494 - Kindergarten Counting Game 414 - Machined Surfaces 490 - Rotating Sentences 445 - Marvelous Mazes

计划,,留

下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年到1年半年时间完成.打牢基础,厚积薄发. 一.UVaOJ http://uva.onlinejudge.org 西班牙Valladolid大学的程序在线评测系统,是历史最悠久.最著名的OJ. 一.<算法竞赛入门经典> 刘汝佳 (UVaOJ 351道题) 以下部分内容摘自:http://sdkdacm.5d6d.com/thread-6-1-1.html "AOAPC I"

算法竞赛入门经典+挑战编程+USACO

下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年到1年半年时间完成.打牢基础,厚积薄发.   一.UVaOJ http://uva.onlinejudge.org  西班牙Valladolid大学的程序在线评测系统,是历史最悠久.最著名的OJ.   二.<算法竞赛入门经典> 刘汝佳  (UVaOJ  351道题)  以下部分内容摘自:http://sdkdacm.5d6d.com/thread-6-1-1.html   "AO