zoj 1203 Swordfish
来源:互联网 发布:windows xp是什么意思 编辑:程序博客网 时间:2024/05/21 10:14
题意要求令总的代价最小,很明显是最小生成树。
在这里,很明显用Prim算法要比用Kruskal算法更方便
#include <iostream>#include <cstdio>#include <cmath>using namespace std;#define MAXN 108//计算出来的两城市之间距离最大值#define MAX_DOUBLE 28285struct Point{double x,y;};//计算两city之间距离double computerDist(Point A,Point B){return sqrt((A.x-B.x)*(A.x-B.x)+(A.y-B.y)*(A.y-B.y));}//记录各个点之间的距离double dists[MAXN][MAXN];//记录每个端点与0号端点的最小距离double distzero[MAXN];Point cites[MAXN];//记录城市是否在最小生成树中bool used[MAXN];int n;int ct = 0;void init(){ //计算好各city之间的距离 for (int i=0;i<n;i++){ scanf("%lf %lf",&cites[i].x,&cites[i].y); for (int j=0 ;j<i;j++){ dists[i][j] = computerDist(cites[i],cites[j]); dists[j][i] = dists[i][j]; } used[i] = 0; distzero[i] = MAX_DOUBLE; }}void prim(){ distzero[0] = true; used[0] = true; int now = 0; double sum = 0; for (int i=0;i<n-1;i++){ double min = MAX_DOUBLE; int next = 0; for (int j=0;j<n;j++){ if (!used[j]){ if(distzero[j]>dists[now][j]){ distzero[j] = dists[now][j]; } if(min>distzero[j]){ min = distzero[j]; next = j; } } } sum += min; now = next; used[now] = true; } printf("Case #%d:\n", ct); printf("The minimal distance is: "); printf("%.2lf\n", sum);}int main(){while(scanf("%d",&n)&&n!=0){ct++;//格式控制if (ct!=1) printf("\n");init(); prim();} return 0;}
- ZOJ 1203 Swordfish ( prim )
- zoj 1203 Swordfish(Prim!)
- zoj 1203 Swordfish【prim】
- Prim zoj 1203 Swordfish
- zoj - 1203 - Swordfish
- zoj 1203 Swordfish
- zoj 1203 Swordfish MST
- ZOJ 1203 - Swordfish
- ZOJ-1203 Swordfish
- ZOJ-1203-Swordfish
- ZOJ:1203 Swordfish
- zoj 1203 Swordfish
- ZOJ 1203 Swordfish MST
- ZOJ 1203 Swordfish
- zoj 1203 Swordfish
- ZOJ-1203 Swordfish
- zoj 1203 Swordfish
- zoj 1203 Swordfish
- zoj1076-Gene Assembly
- 15_4多科成绩单
- (转)Methods for Using Java in ORACLE
- 荆棘鸟的故事
- iphone的调测-不过还是建议花99dollar去调测比较好
- zoj 1203 Swordfish
- ////////////////////////////////////重启计算机////////////////////////////////////
- Word 文档保护及解除
- you must have accepted the latest version of the IOS Developer Program Agreement
- myeclipse 加载 buiding workspace 慢解决方案
- Erlang socket 工作原理
- UFT/QTP11.5新特性
- 【跟师兄学编程】换电脑引发的血案
- 边缘填充算法