HDU 1162 Eddy's picture 最小生成树
来源:互联网 发布:centos 黑屏 只有鼠标 编辑:程序博客网 时间:2024/06/01 08:49
题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=1162
在一个二维平面坐标上有n个点,每两点之间有一条线连接,求其的最小生成树。
最基础的Kruskal算法,直接上代码。
代码如下:
#include <iostream>#include <cstdio>#include <cstdlib>#include <cmath>#include <cstring>#include <string>#include <algorithm>#include <vector>#include <set>#include <map>#include <queue>#include <stack>using namespace std;/*freopen("input.txt","r",stdin);freopen("output.txt","w",stdout);*/int n,m;//n个点,总共有m跳边,单向边double x[105],y[105];int parent[105];//父亲节点struct se{ int x,y; double w;}edge[5055];bool emp(se a,se b){ return a.w<b.w;}void UFset(){ for(int i=0;i<=n;i++) parent[i]=i;}int find(int x){ int r=x; while(x!=parent[x]) x=parent[x]; while(r!=x)//剪枝 { int j=parent[r]; parent[r]=x; r=j; } return x;}void Kruskal(){ int i,count=0; double sum=0; UFset(); for(i=0;i<m;i++) { int x=edge[i].x; int y=edge[i].y; int fx=find(x),fy=find(y); if(fx!=fy) { count++; parent[fx]=fy; sum+=edge[i].w; if(count==n-1) break; } } printf("%.2f\n",sum);}int main(){ int i,j; while(cin>>n) { m=0; for(i=1;i<=n;i++) { scanf("%lf%lf",&x[i],&y[i]); for(j=1;j<i;j++) { edge[m].x=i;//第i个点 edge[m].y=j;//第j个点 edge[m].w=sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]));//i点和j点之间的距离 m++; } } sort(edge,edge+m,emp);//边从小到大排序 Kruskal(); } return 520;}
- hdu 1162 Eddy's picture(最小生成树Prim算法)
- hdu 1162 Eddy's picture(最小生成树Kruskal)
- HDU 1162 Eddy's picture 最小生成树
- hdu 1162 Eddy's picture(最小生成树)
- hdu 1162 Eddy's picture(基础最小生成树)
- HDU 1162 Eddy's picture(最小生成树)
- HDU 1162 Eddy's picture 最小生成树
- HDU 1162 Eddy's picture(图论-最小生成树)
- hdu 1162 Eddy's picture(最小生成树prim)
- Hdu 1162 Eddy's picture【最小生成树】
- HDU-1162 Eddy's picture(最小生成树[Kruskal])
- HDU 1162 Eddy's picture(最小生成树-Prim)
- hdu 1162 Eddy's picture(最小生成树算法)
- HDU 1162 Eddy's picture 最小生成树
- HDU 1162 Eddy's picture (最小生成树)
- hdu 1162 Eddy's picture(最小生成树,prim)
- HDU 1162 Eddy's picture (最小生成树)
- hdu 1162 Eddy's picture 基础最小生成树★
- 免费中医坐堂管理软件
- JavaMail教程(三)-接收邮件
- 建造者模式(Builder)
- UML——活动图
- return 与 exit()的区别--return退出本函数,exit()退出整个程序
- HDU 1162 Eddy's picture 最小生成树
- 编码史记
- 素因数分解
- HDU 1233 还是畅通工程 最小生成树
- 三种人
- 【Android常用控件】EditText常用属性【二】:为文本输入框指定软键盘类型和软键盘回车键图标设置
- linux添加环境变量的方法总结
- java for cycle
- java encoding