hdu1162
来源:互联网 发布:环境破坏的资料数据 编辑:程序博客网 时间:2024/05/16 16:09
今天算是真正写了一会最小生成树,以前都只是看看觉得,嗯,会了,就一闪而过。
参考代码:
http://acm.hdu.edu.cn/discuss/problem/post/reply.php?postid=6133&messageid=1&deep=0
(活着的意义……是在你快死的瞬间划过你脑海的那些事啊……——江南 《龙族》,继续文艺范,,感觉最喜欢龙族3)
2015.10.30:
hahaha.
#include<stdio.h>#include<string.h>#include<math.h>#include<iostream>#include<algorithm>using namespace std;#define N 5010#define M 110struct node{ int x,y; double dis;};node edge[N];int fa[M];double x[M],y[M];bool cmp(node a, node b){ return a.dis<b.dis;}int root(int x){ if(fa[x]==x){ return x; } else{ fa[x]=root(fa[x]); return fa[x]; }}double min_tree(int n,int loca){ double ans=0; int count=0; for(int i=0;i<loca;i++){ int a=root(edge[i].x); int b=root(edge[i].y); if(a==b){ continue; } else{ ans+=edge[i].dis; fa[b]=a;//注意这里应该是b,而不是edge[i].y count++; if(count==(n-1)){ return ans; } } } return ans;}int main(){ int n; int loca; while(scanf("%d",&n)!=EOF){ for(int i=0;i<n;i++){ scanf("%lf%lf",&x[i],&y[i]); fa[i]=i; } loca=0; for(int i=0;i<n-1;i++){//已验证,正确 for(int j=i+1;j<n;j++){ edge[loca].x=i; edge[loca].y=j; edge[loca++].dis=sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j])); } } sort(edge,edge+loca,cmp); printf("%.2lf\n",min_tree(n,loca)); } return 0;}
0 0
- hdu1162
- hdu1162
- hdu1162
- hdu1162
- hdu1162
- HDU1162
- hdu1162
- hdu1162
- HDU1162(prim)
- Eddy's picture hdu1162
- hdu1102 & hdu1162 & hdu1232 & hdu1233
- hdu1162-最小生成树
- hdu1162最小生成树
- Eddy's Picture(Hdu1162)
- HDU1162 Eddy's picture
- HDU1162 --kruskal算法基础
- hdu1162-Eddy's picture
- hdu1162-Eddy's picture
- Objective-C 基础知识之 (十四):属性 Property 点语法
- 自学QT之鼠标事件
- 第九周第五天
- UVa 460 - Overlapping Rectangles
- 培训第三天
- hdu1162
- Codeforces Beta Round #3——B. Lorry
- Objective-C 基础知识之 (十五):KVC
- 实在小店在B2C平台具有一定的知名度
- R操作数据库里面的数据
- poj2289Jamie's Contact Groups(好题)
- ios的系统框架
- lua的table.sort 中出现 invalid order function for sorting
- 异常和异常处理