POJ 2349 Arctic Network (MST中的第K长路)
来源:互联网 发布:php商城分销系统源码 编辑:程序博客网 时间:2024/04/30 12:44
题目: http://poj.org/problem?id=2349
1)关于题意,开始code完了,才发现,样例都解释不过去,题意理解错误,最后才明白是求MST种的长度排序后的第K长的权值,这个题意的叙述 相当无语
2) 我很挫, 连qsort的double 类型的比较都可以不会,其中返回值时 类型的强制转化 都 忘了
在对浮点或者double型的一定要用三目运算符,因为如果也使用整型那样的想减的话,如果是两个很接近的数则可能返回一个小数(大于-1,小于1),而cmp的返回值是int型,因此会将这个小数返回0,系统认为是相等,失去了本来存在的大小关系
就因为这个WA倒无语。。。。。
代码
#include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>#define PI acos(-1.0)#define max(a,b) (a)>(b)? (a):(b)#define min(a,b) (a)>(b)? (b):(a)#define INT_MIN -0x7FFFFFFF#define INT_MAX 10000000.0//0x7FFFFFF#define M 1005#define P 505int s,p;int n;double map[P][P];double mark[P];struct node{ double x,y;}point[P];double edge[P];int ar_edge;/*int cmp(const void *p1,const void *p2){ double a=*(double *)p1; double b=*(double *)p2; if(fabs(a-b)<=0.000001) return 0; return b-a;}*/int cmp1( const void *a , const void *b ){ return *(double *)a < *(double *)b ? 1 : -1;}double di(struct node p1,struct node p2){ return ( sqrt( (p1.x-p2.x)*(p1.x-p2.x) + (p1.y-p2.y)*(p1.y-p2.y))) ;}void prim(int v){ int i,j,k; ar_edge=0; for(i=0;i<=p;i++) { mark[i]=map[v][i]; } mark[v]=-1; for(i=1;i<p;i++) { double mi=INT_MAX; int ar=-1; for(j=1;j<=p;j++) { if(mark[j]>=0 && mi>mark[j]) { ar=j; mi=mark[j]; } } if(ar!=-1) { mark[ar]=-1; edge[ar_edge++]=mi; for(j=1;j<=p;j++) { if(mark[j]>=0 && mark[j]>map[ar][j]) { mark[j]=map[ar][j]; } } } } qsort(edge,ar_edge,sizeof(edge[1]),cmp1); printf("%.2f\n",edge[s-1]);}int main(){ //freopen("in.txt","r",stdin); int i,j,k; scanf("%d",&n); while(n--) { scanf("%d%d",&s,&p); for(i=1;i<=p;i++)//from 1 { scanf("%lf%lf",&point[i].x,&point[i].y); } for(i=1;i<=p;i++) { for(j=1;j<=p;j++) { map[i][j]=di(point[i],point[j]); } } prim(1); } return 0;}
- POJ 2349 Arctic Network (MST中的第K长路)
- POJ 题目2349 Arctic Network(最小生成树,第k长边)
- POJ 2349 Arctic Network mst+冒泡排序
- ZOJ 1914 Arctic Network (POJ 2349 UVA 10369) MST
- Arctic Network 2349(最小生成树的第k长边)
- poj 2349 Arctic Network 最小生成树第k大边-kruskal
- POJ 2349 Arctic Network(Kruskal求最小生成树第k条边的长度)
- POJ 2349 Arctic Network
- POJ 2349 Arctic Network
- poj 2349 Arctic Network
- poj 2349 Arctic Network
- POJ 2349 Arctic Network
- poj 2349 Arctic Network
- POJ-2349-Arctic Network
- POJ 2349 Arctic Network
- POJ 2349 Arctic Network
- POJ 2349 Arctic Network
- POJ 2349 Arctic Network
- boost源码剖析1----内存管理scoped_ptr
- 新人励志之路
- acmclub 2605 LED显示屏
- GetCurrentDirectory()
- Python邮箱客户端编写之接收邮件操作
- POJ 2349 Arctic Network (MST中的第K长路)
- 左旋转字符串
- Java生产者消费者例子
- boost库在工作(37)网络UDP服务端之七
- ubuntu 命令行修复图形界面
- 怎样自己写一个简单的操作系统
- jQuery中(function(){})()执行顺序的理解-
- [leetcode刷题系列]Search in Rotated Sorted Array II
- 国外的机器视觉课程及资料