zoj 1203 Swordfish
来源:互联网 发布:物理实验室软件下载 编辑:程序博客网 时间:2024/05/17 22:02
链接:zoj 1203
题意:输入n个城市的坐标,输出使n个城市连通的最短路线的长度
分析:通过坐标可以将两两之间的长度即权值算出,再用最小生成树的算法
不过这个题要注意输出时的格式问题,两组数据间要空一行
#include<cstdio>#include<cmath>#include<algorithm>using namespace std;int f[110],n,m;struct stu{ int a,b; double c;}t[5000];int cmp(struct stu x,struct stu y){ return x.c<y.c;}int find(int x){ if(x!=f[x]) f[x]=find(f[x]); return f[x];}double krus(){ int i,k=0,x,y; double s; for(i=1;i<m;i++){ x=find(t[i].a); y=find(t[i].b); if(x!=y){ s+=t[i].c; k++; if(k==n-1) break; f[x]=y; } } return s;}int main(){ int i,j,k=0; double s,x[110],y[110]; while(scanf("%d",&n)!=EOF){ if(n==0) break; if(k>=1) printf("\n"); k++; for(i=1;i<=n;i++){ scanf("%lf%lf",&x[i],&y[i]); f[i]=i; } m=1; for(i=1;i<=n;i++) for(j=1;j<i;j++){ t[m].a=i; t[m].b=j; t[m++].c=sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j])); //计算两两间的距离 } sort(t+1,t+m,cmp); s=krus(); printf("Case #%d:\nThe minimal distance is: %.2lf\n",k,s); } return 0;}
1 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
- POJ 2481 Cows
- 耶稣有13个门徒,其中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:13人围坐一圈,从第一个开始报号:123凡是报到“3”就退出圈子,最后留在圈子内的人就是出卖耶稣的叛徒。请找出它原来
- UVA 673 (暑假-线性表 -A - Parentheses Balance)
- java环境变量的配置
- 不将就----一加
- zoj 1203 Swordfish
- 编程n诫
- [程序员的思索_1]程序员的基本修养
- Http Sttuts 404
- Ubuntu14.04安装jdk1.8.0_11
- 背包问题---完全背包详细思路及实现
- 将两个排好序的数组,合并到另外一个数组中,并且合并之后的数组也是有序的。
- UVA 133 (暑假-线性表 -C - The Dole Queue)
- leetcode: Jump Game--python