zoj1203
来源:互联网 发布:淘宝网茵曼旗舰店 编辑:程序博客网 时间:2024/05/05 14:49
题目大意:
给n个城市的坐标,计算连接这N个城市所需线路长度总和的最小值。
解题思路:
最小生成树,prim算法的应用
代码如下:
#include<iostream>#include<stdio.h>#include<math.h>using namespace std;typedef struct{ bool b; double x,y;}no;int n;no node[110];double map[110][110];double prim(){ int i,j,nd1,nd2,num; double lenn=0,max; node[0].b=true; num=1; while(num<n) { max=10000000; for(i=0;i<n;i++) { if(node[i].b) { for(j=0;j<n;j++) { if(node[j].b) continue; else if(map[i][j]<max) { max=map[i][j];nd1=i;nd2=j; } } } } num++; node[nd2].b=true; lenn+=map[nd1][nd2]; } return lenn;}int main(){ int count=0; scanf("%d",&n); while(n) { count++; int i,j; for(i=0;i<n;i++) { scanf("%lf%lf",&node[i].x,&node[i].y); node[i].b=false; } for(i=0;i<n-1;i++) { for(j=i+1;j<n;j++) { double temp; temp=(node[i].x-node[j].x)*(node[i].x-node[j].x)+(node[i].y-node[j].y)*(node[i].y-node[j].y); temp=sqrt(temp); map[i][j]=map[j][i]=temp; } } printf("Case #%d:\n",count); printf("The minimal distance is: %.2lf\n",prim()); scanf("%d",&n); if(n) printf("\n"); } return 0;}
0 0
- zoj1203
- zoj1203
- [水]ZOJ1203
- ZOJ1203 Swordfish
- ZOJ1203 Swordfish
- zoj1203-Swordfish(Kruskal实现)
- zoj1203-Swordfish(prim实现)
- ZOJ1203 kruskal求最小生成树
- ZOJ1203(最小生成树kruskal算法)Swordfish
- [最小生成树入门专题1] zoj1203 E
- 【NOIP2014八校联考第4场第2试10.20】星球联盟(alliance)
- c++ static的作用,以及static对象在类和函数中区别
- 2017.1.18【初中部 】普及组模拟赛C组 捉迷藏 题解
- ArcGIS Image Server简介以及OL2中的加载
- vc 系统音量控制详解
- zoj1203
- mfc 列表控件删除选择行问题 ,在线急啊,=======
- zoj1205
- BZOJ 3626 离线+树链剖分+线段树
- 2017.1.18【初中部 】普及组模拟赛C组 小x的最短路 题解
- zoj1240
- zoj1241
- zoj1242
- BZOJ 3175 最大独立集