hdu-1162 Eddy's picture---浮点数的MST

题目链接:

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

题目大意:

给n个点,求MST权值

解题思路:

直接prim算法

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 typedef long long ll;
 4 const int maxn = 100 + 10;
 5 const int INF = 1e9 + 7;
 6 double Map[maxn][maxn];
 7 double lowcost[maxn];
 8 int mst[maxn];
 9 int n, m;
10 double prim(int u)
11 {
12     double ans = 0;
13     for(int i = 1; i <= n; i++)
14     {
15         lowcost[i] = Map[u][i];
16         mst[i] = u;
17     }
18     mst[u] = -1;
19     for(int i = 1; i < n; i++)
20     {
21         double minn = INF * 1.0;
22         int v = -1;
23         //寻找lowcost数组里面的未加入mst的最小值
24         for(int j = 1; j <= n; j++)
25         {
26             if(mst[j] != -1 && lowcost[j] < minn)
27             {
28                 v = j;
29                 minn = lowcost[j];
30             }
31         }
32         if(v != -1)
33         {
34             mst[v] = -1;
35             ans += lowcost[v];
36             for(int j = 1; j <= n; j++)
37             {
38                 if(mst[j] != -1 && lowcost[j] > Map[v][j])
39                 {
40                     lowcost[j] = Map[v][j];
41                     mst[j] = v;
42                 }
43             }
44         }
45     }
46     printf("%.2f\n", ans);
47 }
48 struct node
49 {
50     double x, y;
51 }a[maxn];
52 double dis(node a, node b)
53 {
54     return sqrt((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y));
55 }
56 int main()
57 {
58     while(scanf("%d", &n) != EOF)
59     {
60         for(int i = 1; i <= n; i++)
61             for(int j = 1; j <= n; j++)Map[i][j] = INF * 1.0;
62         memset(lowcost, 0, sizeof(lowcost));
63         for(int i = 1; i <= n; i++)
64         {
65             scanf("%lf%lf", &a[i].x, &a[i].y);
66         }
67         for(int i = 1; i <= n; i++)
68         {
69             for(int j = i + 1; j <= n; j++)
70             {
71                 double d = dis(a[i], a[j]);
72                 Map[i][j] = Map[j][i] = d;
73             }
74         }
75         prim(1);
76
77     }
78     return 0;
79 }

hdu-1162 Eddy's picture---浮点数的MST

原文地址:https://www.cnblogs.com/fzl194/p/8901655.html

时间: 2024-11-07 02:29:51

hdu-1162 Eddy's picture---浮点数的MST的相关文章

hdu 1162 Eddy&#39;s picture 最小生成树入门题 Prim+Kruskal两种算法AC

Eddy's picture Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 7428    Accepted Submission(s): 3770 Problem Description Eddy begins to like painting pictures recently ,he is sure of himself to

hdu 1162 Eddy&#39;s picture(最小生成树算法)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1162 Eddy's picture Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 6866    Accepted Submission(s): 3469 Problem Description Eddy begins to like p

HDU 1162 Eddy&#39;s picture【最小生成树,Prime算法+Kruskal算法】

Eddy's picture Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 9334    Accepted Submission(s): 4711 Problem Description Eddy begins to like painting pictures recently ,he is sure of himself to

hdu 1162 Eddy&#39;s picture

最小生成树裸题,没有初始化都能AC,看来测试数据只有一组 #include<iostream> #include<vector> #include<cmath> #include<cstdio> #define inf 1<<30 #define maxn 105 using namespace std; struct stu { double x,y; }; stu mapp[maxn]; int n; vector<int>roo

HDU 1162 Eddy&#39;s picture(图论-最小生成树)

题目如下: Eddy's picture Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 7267    Accepted Submission(s): 3676 Problem Description Eddy begins to like painting pictures recently ,he is sure of himse

hdu 1162 Eddy&#39;s picture(最小生成树)

Problem Description Eddy begins to like painting pictures recently ,he is sure of himself to become a painter.Every day Eddy draws pictures in his small room, and he usually puts out his newest pictures to let his friends appreciate. but the result i

HDU 1162 Eddy&#39;s picture (最小生成树)(java版)

Eddy's picture 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1162 --每天在线,欢迎留言谈论. 题目大意: 给你N个点,求把这N个点连在一起的最短总距离. 思路: 假设每两两点之间都有路径,求最小生成树. AC代码:(Java) 1 import java.util.Scanner; 2 import java.math.*; 3 public class Main { 4 public static final int MAX

HDU 1162 Eddy&#39;s picture (prime算法_裸题)

Problem Description Eddy begins to like painting pictures recently ,he is sure of himself to become a painter.Every day Eddy draws pictures in his small room, and he usually puts out his newest pictures to let his friends appreciate. but the result i

hdu 1162 Eddy&#39;s picture (Kruskal算法,prim算法,最小生成树)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1162 [题目大意] 给你n个点的坐标,让你找到联通n个点的一种方法,保证联通的线路最短,典型的最小生成树问题. 方法一 , 通过不断找到最小的边来找到最终结果. Kruskal 算法 #include <iostream> #include <algorithm> #include <cstdio> #include <cmath> using namespac

HDU 1162 Eddy&#39;s picture (最小生成树 prim)

题目链接 Problem Description Eddy begins to like painting pictures recently ,he is sure of himself to become a painter.Every day Eddy draws pictures in his small room, and he usually puts out his newest pictures to let his friends appreciate. but the res