hdu1875

来源:互联网 发布:java jquery ajax实例 编辑:程序博客网 时间:2024/06/04 01:20
/*
分析:
    简单prim,两点之间的距离要自己计算。不过要注意,不要一开始就用double型
来算距离哦,否则一定超时滴~


                                                              2012-06-17
*/








#include"stdio.h"#include"math.h"#include"stdlib.h"struct A{int a,b;int len_2;}E[4955];struct B{int x,y;}por[111];int cmp(const struct A *a,const struct A *b){return a->len_2-b->len_2;}int main(){int T;int n;int i,l,k;int flag;int error;int hash[111];int temp1,temp2;double ans;scanf("%d",&T);while(T--){scanf("%d",&n);for(i=1;i<=n;i++)scanf("%d%d",&por[i].x,&por[i].y);k=0;for(i=1;i<n;i++){for(l=i+1;l<=n;l++){temp1=por[i].x-por[l].x;temp2=por[i].y-por[l].y;E[k].len_2=temp1*temp1+temp2*temp2;if(E[k].len_2<100||E[k].len_2>1000000)E[k].len_2=11111111;E[k].a=i;E[k].b=l;k++;}}qsort(E,k,sizeof(E[0]),cmp);for(i=1;i<=n;i++)hash[i]=1;ans=0;hash[E[0].a]=0;for(i=0;i<k;i++){flag=hash[E[i].a]+hash[E[i].b];if(E[i].len_2==11111111)break;if(flag==1){ans+=sqrt(E[i].len_2);hash[E[i].a]=hash[E[i].b]=0;i=0;}}error=0;for(i=1;i<=n;i++)if(hash[i]){error=1;break;}if(error)printf("oh!\n");elseprintf("%0.1lf\n",ans*100);}return 0;}


原创粉丝点击