最小生成树,继续水~
来源:互联网 发布:泡妞宝鉴天地知我心txt 编辑:程序博客网 时间:2024/05/17 04:42
题目链接:http://openoj.awaysoft.com:8080/judge/contest/contest/view.action?cid=384#problem/I
#include <stdio.h>#include <string.h>#include <math.h>#include <stdlib.h>double dis[510][510];int vist[510];struct node { int x,y;}p[510];double map(node a,node b){ return ( sqrt( (a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y) ) );}int cmp(void const *a,void const *b){ return (*(double *)a)<(*(double *)b);}int main(){ int t,n,m,i,j; double a[510]; scanf("%d",&t); while (t--) { double s=0; scanf("%d%d",&m,&n); for (i=1;i<=n;i++) scanf("%d%d",&p[i].x,&p[i].y); for (i=1;i<n;i++) for (j=i+1;j<=n;j++) dis[i][j]=dis[j][i]=map(p[i],p[j]); /*for (i=1;i<=n;i++) { for (j=1;j<=n;j++) printf("%lf ",dis[i][j]); printf("\n"); }*/ memset(vist,0,sizeof(vist)); vist[1]=1; int T=n-1; int num=0; while (T--) { int pos; double m=10010; for (i=2;i<=n;i++) if (!vist[i] && dis[1][i]<m) { pos=i; m=dis[1][i]; } vist[pos]=1; a[num++]=m; for (i=2;i<=n;i++) if (!vist[i]&& dis[pos][i]<dis[1][i]) dis[1][i]=dis[pos][i]; } qsort(a,num,sizeof(a[0]),cmp); printf("%0.2lf\n",a[m-1]); } return 0; }
- 最小生成树,继续水~
- POJ2485,Highways,最小生成树继续Prim
- 继续畅通工程 hdu 最小生成树
- Hdu1879 - 继续畅通工程 - 最小生成树
- 继续畅通工程(最小生成树)
- hd1879继续畅通工程【最小生成树】
- 继续畅通工程【最小生成树】
- hdu1879 继续畅通工程 最小生成树
- HDU 1879 继续畅通工程(最小生成树 Kruskal算法)
- HDU oj 1879 继续畅通工程 最小生成树
- 最小生成树 普利姆算法 HDOJ 1879 继续畅通工程
- 最小生成树 克丽丝卡尔算法 hdu1879 继续畅通工程
- hdu1879继续畅通工程 最小生成树prim算法
- hdu1879继续畅通工程 最小生成树prim算法
- HDU1879--继续通畅工程--最小生成树--并查集
- HDU 1879 继续畅通工程 最小生成树-Kruskal
- hdu 1879 继续畅通工程 最小生成树
- HDU 1879 继续畅通工程 (最小生成树)
- Another Very Easy Task 我也不知道怎么会过不了?
- 1487: 未覆盖顶点数量.
- SPOJ:416 Divisibility by 15
- 最小生成树之Swordfish
- 哎~水题,还是最小生成树。没想到一遍AC了...
- 最小生成树,继续水~
- 并查集~
- 遇到的第一个上面特判题...刚开始以为样例错了...其实真错了~
- 又遇到一个奇葩问题....输出double用%f...
- 又想吐槽一下了...同样是DP,差别咋就那么大呢?
- 知识准备:一维数组的初始化
- pku 1830 开关问题(构造矩阵+高斯消元)
- iOS 创建universal app
- UVa 557 - Burger