zoukankan      html  css  js  c++  java
  • 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
    ",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
    ",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
    ",w);
            int  x = Find(u) , y = Find(v);
            if (x != y)
            {
                //printf("%.2lf
    ",w);
                ans += w;
                p[x] = y;
            }
        }
        return ans;
    }
    int main()
    {
        int T;
        scanf("%d",&T);
        while (T--)
        {
            init();
            double ans = kruskal();
            printf("%.2f
    ",ans);
            if (T) putchar('
    ');
        }
        return 0;
    }
  • 相关阅读:
    python json 和 pickle的补充 hashlib configparser logging
    go 流程语句 if goto for swich
    go array slice map make new操作
    go 基础
    块级元素 行内元素 空元素
    咽炎就医用药(慢性肥厚性咽炎)
    春季感冒是风寒还是风热(转的文章)
    秋季感冒 咳嗽 怎么选药
    解决IE浏览器“无法显示此网页”的问题
    常用的 css 样式 记录
  • 原文地址:https://www.cnblogs.com/Commence/p/4006389.html
Copyright © 2011-2022 走看看