hdu1162最小生成树
2016-09-09 09:45
260 查看
#include<cstdio> #include<cmath> #include<cstring> #include<iostream> #include<algorithm> #include<queue> #include<string> using namespace std; #define INF 0x3f3f3f3f typedef __int64 ll; struct node { double w; int u,v; } edge[105*105/2]; int f[105]; bool cmp(node a,node b) { return a.w<b.w; } int _find(int x) { if(x!=f[x]) f[x]=_find(f[x]); return f[x]; } double x[105],y[105]; double get_dis(int a,int b) { return sqrt((x[a]-x[b])*(x[a]-x[b])+(y[a]-y[b])*(y[a]-y[b])); } int main() { int n; while(~scanf("%d",&n)) { int cnt=0; for(int i=1;i<=n;i++) { f[i]=i; scanf("%lf%lf",&x[i],&y[i]); for(int j=1;j<i;j++) { edge[cnt].w=get_dis(i,j); edge[cnt].u=i; edge[cnt].v=j; cnt++; } } sort(edge,edge+cnt,cmp); double ans=0; for(int i=0;i<cnt;i++) { int fa=_find(edge[i].u),fb=_find(edge[i].v); if(fa!=fb) { fa>fb?f[fa]=fb:f[fb]=fa; ans+=edge[i].w; } } printf("%.2f\n",ans); } }
相关文章推荐
- HDU 1162 Eddy's picture(最小生成树)
- HDU 1162 最小生成树
- hdu 1162 Eddy's picture(最小生成树prim)
- hdu 1162 Eddy's picture(最小生成树算法)
- hdu-1162-Eddy's picture(克鲁斯卡尔求最小生成树)
- hdu 1162 最小生成树(Kruskal)
- HDU-1875 畅通工程再续-1162 - Eddy's picture(最小生成树,Kruskal 算法实现 )
- hdu 1162 最小生成树
- hdu 1162 Eddy's picture(最小生成树算法)
- HDU 1162 Eddy's picture(最小生成树-Prim)
- HDU-1162(最小生成树)
- hdu1162 Eddy's picture(图论:最小生成树-minimal spanning tree)
- hdu 1162 Eddy's picture(最小生成树Prim算法)
- hdu 1162 Eddy's picture (Kruskal算法,prim算法,最小生成树)
- hdu 1162 Eddy's picture(最小生成树Kruskal)
- hdu 1162 Eddy's picture(最小生成树)
- hdu 1162 Eddy's picture(基础最小生成树)
- HDU 1162 (最小生成树)
- Hdu 1162 Eddy's picture【最小生成树】
- hdu 1162 Eddy's picture (Kruskal算法,prim算法,最小生成树)