hdu 1162
来源:互联网 发布:大连外国语大学知乎 编辑:程序博客网 时间:2024/06/12 19:26
这道题看似简单但是真正做起来却费了不少时间在调试上面。。。。
# include<stdio.h># include<string.h># include<math.h>int ev[6000],eu[6000],id[6000],p[105];double x[105],y[105],ew[6000];double distance(int i,int j){return (x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]);}int cmp(const void *a,const void *b){int c,d;c=*((int *)a);d=*((int *)b);if((ew[d]-ew[c])>1e-6)return -1;return 1;}int find(int x){if(x!=p[x]){p[x]=find(p[x]);}return p[x];}double kruskal(int n,int t){int i,j,k;double ret=0;for(i=1,j=-1;i<n;i++){while(k=id[++j],find(ev[k])==find(eu[k]));ret+=ew[k];p[find(ev[k])]=find(eu[k]);}return ret;}void main(){int i,j,n,t;while(scanf("%d",&n)!=EOF){for(i=0;i<n;i++){scanf("%lf%lf",&x[i],&y[i]);p[i]=i;}for(i=0,t=0;i<n;i++)for(j=i+1;j<n;j++){ev[t]=i;eu[t]=j;ew[t++]=sqrt(distance(i,j));}for(i=0;i<t;i++)id[i]=i;qsort(id,t,sizeof(id[0]),cmp);printf("%.2lf\n",kruskal(n,t));}}
- hdu 1162
- hdu 1162
- HDU 1162
- hdu 1162
- hdu-1162
- hdu 1162
- hdu 1162
- hdu 1162
- hdu 1162 prim算法
- hdu 1162(Kruskal)
- hdu 1162 prim模板
- HDU 1162 Prim
- hdu 1162 kruscal
- hdu 1162 Prim
- hdu
- hdu
- HDU
- hdu ()
- JAVA那些事
- 一道 i++ ++i 引起的整理
- 实现dos2linux功能-shell脚本篇
- 对话框详解2
- 利用onchang()事件一选中下拉框就提交值
- hdu 1162
- 注意 ExecuteNonQuery() 返回值 问题
- fstream打开文件模式
- 数据结构开篇-基础
- DBCP,C3P0,Proxool,BoneCP参数介绍
- Linux编程基础3 Make自动化编译
- UML类图关系(泛化 、继承、实现、依赖、关联、聚合、组合)
- poj 1321 深搜
- 读取ini配置文件