HDU-1162-Eddy's picture
2012-09-06 10:33
239 查看
题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1162
题意:
最小生成树
View Code
题意:
最小生成树
View Code
#include<iostream> #include<algorithm> #include<cmath> using namespace std; const int maxn = 100+10; int far[maxn]; int n, m; int k; struct Edge { const bool operator<(Edge &n)const { return value<n.value; } int start; int end; double value; }edge[maxn*maxn]; bool cmp(struct Edge &a, struct Edge &b) { return a.value<b.value; } void init() { int i, j; for(i=0; i<=n; i++) far[i] = i; } int find(int a) { if(far[a]!=a) far[a] = find(far[a]); return far[a]; } void Union(int a, int b) { a = find(a); b = find(b); if(a != b) far[a] = b; } double kruskal() { init(); sort(edge,edge+n*(n-1)+1,cmp); double sum = 0; int count = 0; for(int i=1; i<=n*(n-1) && count<n; i++) { int a=edge[i].start; int b=edge[i].end; if(find(a)!=find(b)) { Union(a, b); sum+=edge[i].value; count++; } } return sum; } int main() { double a[maxn], b[maxn]; while(cin>>n) { //m = n*(n-1)/2; for(int i=1; i<=n; i++) { scanf("%lf%lf",&a[i], &b[i]); //因为是无向图,所以要两次赋值 } k=1; double c; for(int i=1; i<n; i++) { for(int j=i+1; j<=n; j++) { //if(i != j) //{ c = sqrt((a[i]-a[j])*(a[i]-a[j])+(b[i]-b[j])*(b[i]-b[j])); edge[k].start = i; edge[k].end = j; edge[k++].value = c; edge[k].start = j; edge[k].end = i; edge[k++].value = c; //} } } printf("%.2lf\n", kruskal()); } return 0; }
相关文章推荐
- hdu 1162 Eddy's picture (Kruskal算法,prim算法,最小生成树)
- HDU1162-Eddy's picture(最小生成树)
- hdu 1162 Eddy's picture (最小生成树)
- HDU 1162 Eddy's picture(最小生成树)
- hdu 1162 Eddy's picture(最小生成树算法)
- HDU 1162 Eddy's picture (最小生成树)(java版)
- HDUOJ 1162 Eddy's picture(最小生成树)
- HDU 1162 Eddy's picture (Kruscal最小生成树)
- hdu 1162 Eddy's picture 基础最小生成树★
- HDUOJ-----(1162)Eddy's picture(最小生成树)
- hdu1162 Eddy's picture 最小生成树 prim
- hdu 1162 Eddy's picture (Kruskal算法,prim算法,最小生成树)
- HDU-1162-Eddy's picture
- HDU ACM 1162 Eddy's picture
- HDU 1162.Eddy's picture【最小生成树(Kruskal算法)】【5月30】
- hdu 1162 Eddy's picture(最小生成树,prim)
- hdu 1162 Eddy's picture (并查集+快排)
- HDOJ-1162 Eddy's picture(最小生成树)
- hdu 1162 Eddy's picture(最小生成树之kruskal算法)
- hdu1162 Eddy's picture(Prim算法模板)