HDU-4463-Outlets
来源:互联网 发布:9月经济数据 编辑:程序博客网 时间:2024/05/17 09:05
HDU-4463-Outlets
http://acm.hdu.edu.cn/showproblem.php?pid=4463
已知两点相连,求最小生成树,第一次参加现场赛,各种悲剧。。。这题我敲的,调试了半天才过。。。菜鸟伤不起哇。。。
#include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>#define N 100struct node{int x;int y;double len;}bian[N*N];double dian[N][2];double map[N][N];int f[N];int n;int cmp(const void *a,const void *b){return (*(struct node *)a).len<(*(struct node *)b).len?-1:1;}void init(){int i;for(i=1;i<=n;i++)f[i]=i;}int find(int x){int r=x;while(f[r]!=r)r=f[r];f[x]=r;return r;}int merge(int x,int y){int fx,fy;fx=find(x);fy=find(y);if(fx!=fy){f[fx]=fy;return 1;}return 0;}int main(){int i,j,a,b,t,num;double ans;while(scanf("%d",&n),n){scanf("%d%d",&a,&b);for(i=1;i<=n;i++)scanf("%lf%lf",&dian[i][0],&dian[i][1]);t=0;ans=0;for(i=1;i<=n;i++)for(j=i+1;j<=n;j++){bian[t].x=i;bian[t].y=j;bian[t].len=sqrt((dian[i][0]-dian[j][0])*(dian[i][0]-dian[j][0])+(dian[i][1]-dian[j][1])*(dian[i][1]-dian[j][1]));map[i][j]=map[j][i]=bian[t++].len;}qsort(bian,t,sizeof(struct node),cmp);init();f[find(a)]=find(b);ans+=map[a][b];num=1;//已经有一条边了 for(i=0;i<t;i++){if((bian[i].x==a&&bian[i].y==b)||(bian[i].x==b&&bian[i].y==a))continue;if(merge(bian[i].x,bian[i].y)){num++;ans+=bian[i].len;}if(num==n-1) //如果加入了n-1条边,则构成最小生成树,结束循环break;}printf("%.2lf\n",ans);}return 0;}
- HDU-4463-Outlets
- hdu 4463 Outlets
- HDU-4463-Outlets
- hdu 4463 Outlets(prim)
- hdu 4463 Outlets
- HDU 4463 Outlets
- hdu 4463 Outlets
- HDU 4463 Outlets
- HDU 4463 Outlets【Prim】
- HDU 4463 Outlets
- HDU 4463 Outlets
- HDU-4463-Outlets
- hdu 4463 Outlets
- hdu——4463Outlets
- HDU 4463 Outlets (枚举)
- HDU-4463-Outlets -最小生成树
- hdu 4463 Outlets (次小生成树)
- HDU 4463 Outlets 最小生成树
- poj 1017 Packets
- SET QUOTED_IDENTIFIER OFF语句的作用
- Smarty 变量调节器
- 应用崩溃,断点出现随即,多为UI对象被释放
- PHP与UML类图: PHP and UML Class Diagrams
- HDU-4463-Outlets
- BT5无法启动图形界面问题
- 彩球分配问题:共有12个彩球,4个红的,4个白的,4个黄的,从中挑出8个球放入3个不同的口袋(口袋编号分别为a、b、c)编写程序打印输出所有可能的放法。
- AVL 树实现
- poj 3172 Scales
- css3手记
- Python 正则匹配学习
- gentoo双网卡绑定为bond
- eclipse导入jquery包后报错