Swordfish
来源:互联网 发布:mac 黑客帝国屏保 编辑:程序博客网 时间:2024/05/28 05:18
A world beneath what we call cyberspace.
A world protected by firewalls,
passwords and the most advanced
security systems.
In this world we hide
our deepest secrets,
our most incriminating information,
and of course, a shole lot of money.
This is the world of Swordfish.
You who has watched the movie know that Gabriel at last got the money by threatening to hang Ginger to death. Why not Gabriel go get the money himself? Because these money keep jumping, and these accounts are scattered in different cities. In order to gather up these money Gabriel would need to build money transfering tunnels to connect all these cities. Surely it will be really expensive to construct such a transfering tunnel, so Gabriel wants to find out the minimal total length of the tunnel required to connect all these cites. Now he asks you to write a computer program to find out the minimal length. Since Gabriel will get caught at the end of it anyway, so you can go ahead and write the program without feeling guilty about helping a criminal.
Input:
The input contains several test cases. Each test case begins with a line contains only one integer N (0 <= N <=100), which indicates the number of cities you have to connect. The next N lines each contains two real numbers X and Y(-10000 <= X,Y <= 10000), which are the citie's Cartesian coordinates (to make the problem simple, we can assume that we live in a flat world). The input is terminated by a case with N=0 and you must not print any output for this case.
Output:
You need to help Gabriel calculate the minimal length of tunnel needed to connect all these cites. You can saftly assume that such a tunnel can be built directly from one city to another. For each of the input cases, the output shall consist of two lines: the first line contains "Case #n:", where n is the case number (starting from 1); and the next line contains "The minimal distance is: d", where d is the minimal distance, rounded to 2 decimal places. Output a blank line between two test cases.
Sample Input:
50 00 11 11 00.5 0.50
Sample Output:
Case #1:The minimal distance is: 2.83对于这种题我只想说我们一定要注意格式问题,这个问题很棘手,错了一万遍,尤其是那个空格,那个地方该加,那个地方不该加,下次不能再PE
#include<iostream>#include<algorithm>#include<cstdio>#include<string.h>#include<math.h>using namespace std;const int Max=1010;int pre[110];struct p{ double x,y;}Point[110];typedef struct edge{ int u,v; double w;}Node;Node Edge[10010];int cmp(Node a,Node b){ return a.w<b.w;}int find_root(int x){ return pre[x]==x?x:pre[x]=find_root(pre[x]);}int main(){ int n; int num=1; while(~scanf("%d",&n)) { if(n) { memset(pre,0,sizeof(pre)); memset(Edge,0,sizeof(Edge)); memset(Point,0,sizeof(Point)); for(int i=1;i<=n;i++) { scanf("%lf %lf",&Point[i].x,&Point[i].y); pre[i]=i; } int cnt=0; for(int i=1;i<=n;i++) for(int j=i+1;j<=n;j++) { Edge[cnt].u=i,Edge[cnt].v=j; double x1=Point[i].x,x2=Point[j].x; double y1=Point[i].y,y2=Point[j].y; double dis=(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2); Edge[cnt++].w=sqrt(dis); } sort(Edge,Edge+cnt,cmp); double ans=0; for(int i=0;i<cnt;i++) { int x=Edge[i].u,y=Edge[i].v; int rx=find_root(x),ry=find_root(y); if(rx!=ry) { pre[ry]=rx; ans += Edge[i].w; } } if(num==1) { printf("Case #%d:\n",num++); printf("The minimal distance is: %.2f\n",ans);//妈的这个case 的经常有空格,简直了 } else { printf("\n"); printf("Case #%d:\n",num++); printf("The minimal distance is: %.2f\n",ans);//妈的这个case 的经常有空格,简直了 } } else break; } return 0;}
阅读全文
0 0
- Swordfish
- Swordfish
- 1203 Swordfish
- zoj_1203 Swordfish
- ZOJ1203 Swordfish
- ZOJ1203 Swordfish
- ZOJ 1203 Swordfish ( prim )
- zoj 1203 Swordfish(Prim!)
- zoj 1203 Swordfish【prim】
- Prim zoj 1203 Swordfish
- zoj - 1203 - Swordfish
- zoj1203-Swordfish(Kruskal实现)
- zoj1203-Swordfish(prim实现)
- zoj 1203 Swordfish
- 数独之Swordfish
- zoj 1203 Swordfish MST
- HUT A - Swordfish
- ZOJ 1203 - Swordfish
- VBA与Excel进阶系列-03-图表(下篇)
- 正则表达式 备忘录
- 数三角形
- 微擎二级分类分析
- iOS 每天凌晨发送通知更新界面
- Swordfish
- bfs广搜 胜利大逃亡 HDU
- Spring form标签示例
- EBS调用交叉验证规则校验外围系统导入凭证
- 基于灰度的模板匹配算法(一):MAD、SAD、SSD、MSD、NCC、SSDA算法
- QT和opencv 相结合的软件,自己搭建的。
- CSS中margin和padding的区别
- MockMVC
- 如何先搜索文件然后在文件中搜索具体内容进行输出?