Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 43299 Accepted Submission(s): 13943
This problem contains multiple test cases!
The first line of a multiple input is an integer N, then a blank line followed by N input blocks. Each input block is in the format indicated in the problem description. There is a blank line between input blocks.
The output format consists of N output blocks. There is a blank line between output blocks.
//几何的简单模板题
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <cmath> 5 #include <algorithm> 6 using namespace std; 7 #define INF 0x7f7f7f 8 int n; 9 struct Point10 {11 double x,y;12 }p[100001];13 bool cmp(Point a,Point b)14 {15 if(a.x==b.x)16 {17 return a.y<b.y;18 }19 return a.x<b.x;20 }21 double dis(Point a,Point b)22 {23 return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));24 }25 double getMin(int i)26 {27 double d=999999,di=0;28 for(int j=i+1;j<n;j++)29 {30 di=dis(p[i],p[j]);31 if(d>di)d=di;32 else break;33 }34 return d;35 }36 int main()37 {38 int i,j,k;39 double ans,f;40 while(scanf("%d",&n)!=EOF)41 {42 if(!n)break;43 for(i=0;i<n;i++)44 {45 scanf("%lf%lf",&p[i].x,&p[i].y);46 }47 sort(p,p+n,cmp);48 ans=INF;49 for(i=0;i<n-1;i++)50 {51 f=getMin(i);52 if(ans>f)ans=f;53 }54 printf("%.2lf\n",ans/2.0);55 }56 return 0;57 }