POJ 2560 Freckles------最小生成树(水啊)
来源:互联网 发布:遗传算法 应用 编辑:程序博客网 时间:2024/06/05 17:06
没啥说的,计算点之间的距离,然后 最小生成树。。
#include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>int parent[101];int root(int p){ if(parent[p]==-1) return p; else return parent[p]=root(parent[p]);}void merge(int a,int b){ a=root(a); b=root(b); parent[a]=b;}struct pos{ int a,b; double len;}p[5050];struct dian{ double x,y;}di[101];int comp(const void *a,const void *b){ if((((struct pos *)a)->len)-(((struct pos *)b)->len)>0) return 1; else return -1;}double dis(struct dian a,struct dian b){ return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));}int main(){ int i,j,k; int n,a,b,c,q; while(scanf("%d",&n)!=EOF) { int flag=0; memset(parent,-1,sizeof(parent)); for(i=1;i<=n;i++) { scanf("%lf%lf",&di[i].x,&di[i].y); } for(i=1;i<n;i++) for(j=i+1;j<=n;j++) { p[flag].a=i; p[flag].b=j; p[flag].len=dis(di[i],di[j]); flag++; } double sum=0; qsort(p,flag,sizeof(struct pos),comp); //一般用sort for(i=0;i<flag;i++) { if(root(p[i].a)!=root(p[i].b)) { merge(p[i].a,p[i].b); sum+=p[i].len; } } printf("%.2lf\n",sum); }}
- POJ 2560 Freckles(最小生成树)
- POJ 2560 Freckles------最小生成树(水啊)
- POJ 2560 Freckles 最小生成树
- poj -2560-Freckles-最小生成树
- POJ 2560 Freckles(最小生成树-Kruskal)
- 2560 Freckles (最小生成树)
- Poj 2560 || Hdu 1162 Freckles--最小生成树
- 最小生成树Freckles
- 最小生成树 Freckles
- 10034 - Freckles(最小生成树)
- UVA10034 - Freckles(最小生成树)
- POJ 2560 Freckles 最小生成树 Kruskal+并查集使用
- uva 10034 Freckles(最小生成树Kruskal)
- UVa 10034 Freckles (最小生成树+kruskal)
- Jobdu1144 Freckles(最小生成树,Kruskal算法)
- HOJ 1811 Freckles (Prim 最小生成树)
- uva 10034 Freckles(最小生成树Kruskal)
- UVA 10034 - Freckles(最小生成树)
- 软中断与硬中断
- 孙鑫VC++深入详解:Lesson5 Part4 屏幕字符串滚动输出,DrawText,SetTimer,WM_Timer消息
- 主流 编程语言 比较
- node.js 模拟登录新浪微博
- 用RMAN 备份异机恢复 迁移数据
- POJ 2560 Freckles------最小生成树(水啊)
- 如何为winform程序打包(图解)
- RED HAT中samba服务器配置
- codeforces 1A 解题报告
- SharePoint 用户配置文件服务
- CRC8校验
- SQL SERVER的recovery interval
- window.prompt()方法的学习
- javaScript 中的 with 和 this 的用法