HDU3405-World Islands
来源:互联网 发布:土方平衡计算软件 编辑:程序博客网 时间:2024/06/15 05:05
经过遍历生成树水过去了,还是不太理解为什么不能一次性kruskal然后少连接一条边来判断。数据略水。
#include<iostream>#include<cstring>#include<cstdio>#include<math.h>#include<vector>#include<algorithm>#include<queue>#include<set>#include<map>using namespace std;int pre[60];int find(int x){ while(x!=pre[x]) x=pre[x]; return x;}double x[60],y[60];struct e{ int x,y; double z;}a[2600];int cmp(e a,e b){ return a.z<b.z;}int main(){ int t; scanf("%d",&t); while(t--) { int n; scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%lf%lf",&x[i],&y[i]); } double res=999999; for(int num=1;num<=n;num++) { for(int i=1;i<=n;i++) pre[i]=i; int edg=0; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) { if(i==num||j==num) continue; a[edg].x=i; a[edg].y=j; a[edg++].z=sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j])); } // printf("edg %d\n",edg); sort(a,a+edg,cmp); double ans=0; for(int i=0;i<edg;i++){ int dx=find(a[i].x); int dy=find(a[i].y); if(dx!=dy){ pre[dx]=dy; ans+=a[i].z; } } res=min(res,ans); } printf("%.2f\n",res); } return 0;}
0 0
- HDU3405-World Islands
- hdu3405独立日——World Islands
- World Islands HDU3405 杭州省赛 最小生成树
- POJ 3771 World Islands
- hdu 3405 world islands
- hdu 3405 World Islands
- HDU 3405 World Islands(最短路)
- HDU 3405 World Islands (prim算法)
- Islands
- islands
- POJ 3771 World Islands 最小生成树+删点
- hdu 3405 World Islands(最小生成树)
- HDU 3405 World Islands(最小生成树)
- zoj Islands
- 岛屿Islands
- 计蒜客 Islands
- Islands UVA
- [pku2288]Islands and Bridges
- 如何转换一些常见的文档格式
- 2015暑假集训总结
- mysql grant
- Android操作HTTP实现与服务器通信
- Hdu Oj 2112 HDU Today
- HDU3405-World Islands
- oc Foundation框架 Number类 Array类
- MongoDB的一些命令
- extjs Combox 调用数据
- Sublime Text 2:使用、安装插件(FTP)
- gc实例与gc报告的阅读
- PIL+pytesser引用路径
- 好炫的Lambda表达式,Java党用起来!(最简易Lambda教程)
- Python 之 元组小结